@@ -76,8 +76,8 @@ discard block |
||
76 | 76 | * @throws ConstraintParameterException |
77 | 77 | * @return array [ DataValue|null $min, DataValue|null $max, PropertyId $property, array $parameters ] |
78 | 78 | */ |
79 | - private function parseConstraintParameters( Constraint $constraint ) { |
|
80 | - list( $min, $max ) = $this->constraintParameterParser->parseQuantityRangeParameter( |
|
79 | + private function parseConstraintParameters(Constraint $constraint) { |
|
80 | + list($min, $max) = $this->constraintParameterParser->parseQuantityRangeParameter( |
|
81 | 81 | $constraint->getConstraintParameters(), |
82 | 82 | $constraint->getConstraintTypeItemId() |
83 | 83 | ); |
@@ -87,15 +87,15 @@ discard block |
||
87 | 87 | ); |
88 | 88 | |
89 | 89 | $parameters = []; |
90 | - if ( $min !== null ) { |
|
91 | - $parameters['minimum_quantity'] = [ $min ]; |
|
90 | + if ($min !== null) { |
|
91 | + $parameters['minimum_quantity'] = [$min]; |
|
92 | 92 | } |
93 | - if ( $max !== null ) { |
|
94 | - $parameters['maximum_quantity'] = [ $max ]; |
|
93 | + if ($max !== null) { |
|
94 | + $parameters['maximum_quantity'] = [$max]; |
|
95 | 95 | } |
96 | - $parameters['property'] = [ $property ]; |
|
96 | + $parameters['property'] = [$property]; |
|
97 | 97 | |
98 | - return [ $min, $max, $property, $parameters ]; |
|
98 | + return [$min, $max, $property, $parameters]; |
|
99 | 99 | } |
100 | 100 | |
101 | 101 | /** |
@@ -105,13 +105,13 @@ discard block |
||
105 | 105 | * |
106 | 106 | * @return bool |
107 | 107 | */ |
108 | - private function rangeInYears( $min, $max ) { |
|
109 | - $yearUnit = $this->config->get( 'WBQualityConstraintsYearUnit' ); |
|
108 | + private function rangeInYears($min, $max) { |
|
109 | + $yearUnit = $this->config->get('WBQualityConstraintsYearUnit'); |
|
110 | 110 | |
111 | - if ( $min !== null && $min->getUnit() === $yearUnit ) { |
|
111 | + if ($min !== null && $min->getUnit() === $yearUnit) { |
|
112 | 112 | return true; |
113 | 113 | } |
114 | - if ( $max !== null && $max->getUnit() === $yearUnit ) { |
|
114 | + if ($max !== null && $max->getUnit() === $yearUnit) { |
|
115 | 115 | return true; |
116 | 116 | } |
117 | 117 | |
@@ -127,30 +127,30 @@ discard block |
||
127 | 127 | * @throws ConstraintParameterException |
128 | 128 | * @return CheckResult |
129 | 129 | */ |
130 | - public function checkConstraint( Context $context, Constraint $constraint ) { |
|
131 | - if ( $context->getSnakRank() === Statement::RANK_DEPRECATED ) { |
|
132 | - return new CheckResult( $context, $constraint, [], CheckResult::STATUS_DEPRECATED ); |
|
130 | + public function checkConstraint(Context $context, Constraint $constraint) { |
|
131 | + if ($context->getSnakRank() === Statement::RANK_DEPRECATED) { |
|
132 | + return new CheckResult($context, $constraint, [], CheckResult::STATUS_DEPRECATED); |
|
133 | 133 | } |
134 | 134 | |
135 | 135 | $parameters = []; |
136 | 136 | |
137 | 137 | $snak = $context->getSnak(); |
138 | 138 | |
139 | - if ( !$snak instanceof PropertyValueSnak ) { |
|
139 | + if (!$snak instanceof PropertyValueSnak) { |
|
140 | 140 | // nothing to check |
141 | - return new CheckResult( $context, $constraint, $parameters, CheckResult::STATUS_COMPLIANCE ); |
|
141 | + return new CheckResult($context, $constraint, $parameters, CheckResult::STATUS_COMPLIANCE); |
|
142 | 142 | } |
143 | 143 | |
144 | 144 | $minuend = $snak->getDataValue(); |
145 | 145 | '@phan-var \DataValues\TimeValue|\DataValues\QuantityValue|\DataValues\UnboundedQuantityValue $minuend'; |
146 | 146 | |
147 | 147 | /** @var PropertyId $property */ |
148 | - list( $min, $max, $property, $parameters ) = $this->parseConstraintParameters( $constraint ); |
|
148 | + list($min, $max, $property, $parameters) = $this->parseConstraintParameters($constraint); |
|
149 | 149 | |
150 | 150 | // checks only the first occurrence of the referenced property |
151 | - foreach ( $context->getSnakGroup( Context::GROUP_NON_DEPRECATED ) as $otherSnak ) { |
|
151 | + foreach ($context->getSnakGroup(Context::GROUP_NON_DEPRECATED) as $otherSnak) { |
|
152 | 152 | if ( |
153 | - !$property->equals( $otherSnak->getPropertyId() ) || |
|
153 | + !$property->equals($otherSnak->getPropertyId()) || |
|
154 | 154 | !$otherSnak instanceof PropertyValueSnak |
155 | 155 | ) { |
156 | 156 | continue; |
@@ -158,30 +158,29 @@ discard block |
||
158 | 158 | |
159 | 159 | $subtrahend = $otherSnak->getDataValue(); |
160 | 160 | '@phan-var \DataValues\TimeValue|\DataValues\QuantityValue|\DataValues\UnboundedQuantityValue $subtrahend'; |
161 | - if ( $subtrahend->getType() === $minuend->getType() ) { |
|
162 | - $diff = $this->rangeInYears( $min, $max ) && $minuend->getType() === 'time' ? |
|
163 | - $this->rangeCheckerHelper->getDifferenceInYears( $minuend, $subtrahend ) : |
|
164 | - $this->rangeCheckerHelper->getDifference( $minuend, $subtrahend ); |
|
161 | + if ($subtrahend->getType() === $minuend->getType()) { |
|
162 | + $diff = $this->rangeInYears($min, $max) && $minuend->getType() === 'time' ? |
|
163 | + $this->rangeCheckerHelper->getDifferenceInYears($minuend, $subtrahend) : $this->rangeCheckerHelper->getDifference($minuend, $subtrahend); |
|
165 | 164 | |
166 | - if ( $this->rangeCheckerHelper->getComparison( $min, $diff ) > 0 || |
|
167 | - $this->rangeCheckerHelper->getComparison( $diff, $max ) > 0 |
|
165 | + if ($this->rangeCheckerHelper->getComparison($min, $diff) > 0 || |
|
166 | + $this->rangeCheckerHelper->getComparison($diff, $max) > 0 |
|
168 | 167 | ) { |
169 | 168 | // at least one of $min, $max is set at this point, otherwise there could be no violation |
170 | - $openness = $min !== null ? ( $max !== null ? '' : '-rightopen' ) : '-leftopen'; |
|
169 | + $openness = $min !== null ? ($max !== null ? '' : '-rightopen') : '-leftopen'; |
|
171 | 170 | // possible message keys: |
172 | 171 | // wbqc-violation-message-diff-within-range |
173 | 172 | // wbqc-violation-message-diff-within-range-leftopen |
174 | 173 | // wbqc-violation-message-diff-within-range-rightopen |
175 | - $message = ( new ViolationMessage( "wbqc-violation-message-diff-within-range$openness" ) ) |
|
176 | - ->withEntityId( $context->getSnak()->getPropertyId(), Role::PREDICATE ) |
|
177 | - ->withDataValue( $minuend, Role::OBJECT ) |
|
178 | - ->withEntityId( $otherSnak->getPropertyId(), Role::PREDICATE ) |
|
179 | - ->withDataValue( $subtrahend, Role::OBJECT ); |
|
180 | - if ( $min !== null ) { |
|
181 | - $message = $message->withDataValue( $min, Role::OBJECT ); |
|
174 | + $message = (new ViolationMessage("wbqc-violation-message-diff-within-range$openness")) |
|
175 | + ->withEntityId($context->getSnak()->getPropertyId(), Role::PREDICATE) |
|
176 | + ->withDataValue($minuend, Role::OBJECT) |
|
177 | + ->withEntityId($otherSnak->getPropertyId(), Role::PREDICATE) |
|
178 | + ->withDataValue($subtrahend, Role::OBJECT); |
|
179 | + if ($min !== null) { |
|
180 | + $message = $message->withDataValue($min, Role::OBJECT); |
|
182 | 181 | } |
183 | - if ( $max !== null ) { |
|
184 | - $message = $message->withDataValue( $max, Role::OBJECT ); |
|
182 | + if ($max !== null) { |
|
183 | + $message = $message->withDataValue($max, Role::OBJECT); |
|
185 | 184 | } |
186 | 185 | $status = CheckResult::STATUS_VIOLATION; |
187 | 186 | } else { |
@@ -189,17 +188,17 @@ discard block |
||
189 | 188 | $status = CheckResult::STATUS_COMPLIANCE; |
190 | 189 | } |
191 | 190 | } else { |
192 | - $message = new ViolationMessage( 'wbqc-violation-message-diff-within-range-must-have-equal-types' ); |
|
191 | + $message = new ViolationMessage('wbqc-violation-message-diff-within-range-must-have-equal-types'); |
|
193 | 192 | $status = CheckResult::STATUS_VIOLATION; |
194 | 193 | } |
195 | 194 | |
196 | - return new CheckResult( $context, $constraint, $parameters, $status, $message ); |
|
195 | + return new CheckResult($context, $constraint, $parameters, $status, $message); |
|
197 | 196 | } |
198 | 197 | |
199 | - return new CheckResult( $context, $constraint, $parameters, CheckResult::STATUS_COMPLIANCE ); |
|
198 | + return new CheckResult($context, $constraint, $parameters, CheckResult::STATUS_COMPLIANCE); |
|
200 | 199 | } |
201 | 200 | |
202 | - public function checkConstraintParameters( Constraint $constraint ) { |
|
201 | + public function checkConstraintParameters(Constraint $constraint) { |
|
203 | 202 | $constraintParameters = $constraint->getConstraintParameters(); |
204 | 203 | $constraintTypeItemId = $constraint->getConstraintTypeItemId(); |
205 | 204 | $exceptions = []; |
@@ -208,7 +207,7 @@ discard block |
||
208 | 207 | $constraintParameters, |
209 | 208 | $constraintTypeItemId |
210 | 209 | ); |
211 | - } catch ( ConstraintParameterException $e ) { |
|
210 | + } catch (ConstraintParameterException $e) { |
|
212 | 211 | $exceptions[] = $e; |
213 | 212 | } |
214 | 213 | try { |
@@ -216,7 +215,7 @@ discard block |
||
216 | 215 | $constraintParameters, |
217 | 216 | $constraintTypeItemId |
218 | 217 | ); |
219 | - } catch ( ConstraintParameterException $e ) { |
|
218 | + } catch (ConstraintParameterException $e) { |
|
220 | 219 | $exceptions[] = $e; |
221 | 220 | } |
222 | 221 | return $exceptions; |
@@ -53,7 +53,7 @@ discard block |
||
53 | 53 | $this->config = $config; |
54 | 54 | $this->timeParser = new IsoTimestampParser(); |
55 | 55 | $this->timeCalculator = new TimeValueCalculator(); |
56 | - $this->timeValueComparer = new TimeValueComparer( $this->timeCalculator ); |
|
56 | + $this->timeValueComparer = new TimeValueComparer($this->timeCalculator); |
|
57 | 57 | $this->unitConverter = $unitConverter; |
58 | 58 | } |
59 | 59 | |
@@ -61,10 +61,10 @@ discard block |
||
61 | 61 | * @param UnboundedQuantityValue $value |
62 | 62 | * @return UnboundedQuantityValue $value converted to standard units if possible, otherwise unchanged $value. |
63 | 63 | */ |
64 | - private function standardize( UnboundedQuantityValue $value ) { |
|
65 | - if ( $this->unitConverter !== null ) { |
|
66 | - $standard = $this->unitConverter->toStandardUnits( $value ); |
|
67 | - if ( $standard !== null ) { |
|
64 | + private function standardize(UnboundedQuantityValue $value) { |
|
65 | + if ($this->unitConverter !== null) { |
|
66 | + $standard = $this->unitConverter->toStandardUnits($value); |
|
67 | + if ($standard !== null) { |
|
68 | 68 | return $standard; |
69 | 69 | } else { |
70 | 70 | return $value; |
@@ -86,33 +86,33 @@ discard block |
||
86 | 86 | * when $lhs is respectively less than, equal to, or greater than $rhs. |
87 | 87 | * (In other words, just like the “spaceship” operator <=>.) |
88 | 88 | */ |
89 | - public function getComparison( DataValue $lhs = null, DataValue $rhs = null ) { |
|
90 | - if ( $lhs === null || $rhs === null ) { |
|
89 | + public function getComparison(DataValue $lhs = null, DataValue $rhs = null) { |
|
90 | + if ($lhs === null || $rhs === null) { |
|
91 | 91 | return 0; |
92 | 92 | } |
93 | 93 | |
94 | - if ( $lhs->getType() !== $rhs->getType() ) { |
|
95 | - throw new InvalidArgumentException( 'Different data value types' ); |
|
94 | + if ($lhs->getType() !== $rhs->getType()) { |
|
95 | + throw new InvalidArgumentException('Different data value types'); |
|
96 | 96 | } |
97 | 97 | |
98 | - switch ( $lhs->getType() ) { |
|
98 | + switch ($lhs->getType()) { |
|
99 | 99 | case 'time': |
100 | 100 | /** @var TimeValue $lhs */ |
101 | 101 | /** @var TimeValue $rhs */ |
102 | 102 | '@phan-var TimeValue $lhs'; |
103 | 103 | '@phan-var TimeValue $rhs'; |
104 | - return $this->timeValueComparer->getComparison( $lhs, $rhs ); |
|
104 | + return $this->timeValueComparer->getComparison($lhs, $rhs); |
|
105 | 105 | case 'quantity': |
106 | 106 | /** @var QuantityValue|UnboundedQuantityValue $lhs */ |
107 | 107 | /** @var QuantityValue|UnboundedQuantityValue $rhs */ |
108 | 108 | '@phan-var QuantityValue|UnboundedQuantityValue $lhs'; |
109 | 109 | '@phan-var QuantityValue|UnboundedQuantityValue $rhs'; |
110 | - $lhsStandard = $this->standardize( $lhs ); |
|
111 | - $rhsStandard = $this->standardize( $rhs ); |
|
112 | - return $lhsStandard->getAmount()->compare( $rhsStandard->getAmount() ); |
|
110 | + $lhsStandard = $this->standardize($lhs); |
|
111 | + $rhsStandard = $this->standardize($rhs); |
|
112 | + return $lhsStandard->getAmount()->compare($rhsStandard->getAmount()); |
|
113 | 113 | } |
114 | 114 | |
115 | - throw new InvalidArgumentException( 'Unsupported data value type' ); |
|
115 | + throw new InvalidArgumentException('Unsupported data value type'); |
|
116 | 116 | } |
117 | 117 | |
118 | 118 | /** |
@@ -127,71 +127,71 @@ discard block |
||
127 | 127 | * @throws InvalidArgumentException if the values do not both have the same, supported data value type |
128 | 128 | * @return UnboundedQuantityValue |
129 | 129 | */ |
130 | - public function getDifference( DataValue $minuend, DataValue $subtrahend ) { |
|
131 | - if ( $minuend->getType() === 'time' && $subtrahend->getType() === 'time' ) { |
|
132 | - $minuendSeconds = $this->timeCalculator->getTimestamp( $minuend ); |
|
133 | - $subtrahendSeconds = $this->timeCalculator->getTimestamp( $subtrahend ); |
|
130 | + public function getDifference(DataValue $minuend, DataValue $subtrahend) { |
|
131 | + if ($minuend->getType() === 'time' && $subtrahend->getType() === 'time') { |
|
132 | + $minuendSeconds = $this->timeCalculator->getTimestamp($minuend); |
|
133 | + $subtrahendSeconds = $this->timeCalculator->getTimestamp($subtrahend); |
|
134 | 134 | return UnboundedQuantityValue::newFromNumber( |
135 | 135 | $minuendSeconds - $subtrahendSeconds, |
136 | - $this->config->get( 'WBQualityConstraintsSecondUnit' ) |
|
136 | + $this->config->get('WBQualityConstraintsSecondUnit') |
|
137 | 137 | ); |
138 | 138 | } |
139 | - if ( $minuend->getType() === 'quantity' && $subtrahend->getType() === 'quantity' ) { |
|
140 | - $minuendStandard = $this->standardize( $minuend ); |
|
141 | - $subtrahendStandard = $this->standardize( $subtrahend ); |
|
139 | + if ($minuend->getType() === 'quantity' && $subtrahend->getType() === 'quantity') { |
|
140 | + $minuendStandard = $this->standardize($minuend); |
|
141 | + $subtrahendStandard = $this->standardize($subtrahend); |
|
142 | 142 | $minuendValue = $minuendStandard->getAmount()->getValueFloat(); |
143 | 143 | $subtrahendValue = $subtrahendStandard->getAmount()->getValueFloat(); |
144 | 144 | $diff = $minuendValue - $subtrahendValue; |
145 | 145 | // we don’t check whether both quantities have the same standard unit – |
146 | 146 | // that’s the job of a different constraint type, Units (T164372) |
147 | - return UnboundedQuantityValue::newFromNumber( $diff, $minuendStandard->getUnit() ); |
|
147 | + return UnboundedQuantityValue::newFromNumber($diff, $minuendStandard->getUnit()); |
|
148 | 148 | } |
149 | 149 | |
150 | - throw new InvalidArgumentException( 'Unsupported or different data value types' ); |
|
150 | + throw new InvalidArgumentException('Unsupported or different data value types'); |
|
151 | 151 | } |
152 | 152 | |
153 | - public function getDifferenceInYears( TimeValue $minuend, TimeValue $subtrahend ) { |
|
154 | - if ( !preg_match( '/^([-+]\d{1,16})-(.*)$/', $minuend->getTime(), $minuendMatches ) || |
|
155 | - !preg_match( '/^([-+]\d{1,16})-(.*)$/', $subtrahend->getTime(), $subtrahendMatches ) |
|
153 | + public function getDifferenceInYears(TimeValue $minuend, TimeValue $subtrahend) { |
|
154 | + if (!preg_match('/^([-+]\d{1,16})-(.*)$/', $minuend->getTime(), $minuendMatches) || |
|
155 | + !preg_match('/^([-+]\d{1,16})-(.*)$/', $subtrahend->getTime(), $subtrahendMatches) |
|
156 | 156 | ) { |
157 | - throw new InvalidArgumentException( 'TimeValue::getTime() did not match expected format' ); |
|
157 | + throw new InvalidArgumentException('TimeValue::getTime() did not match expected format'); |
|
158 | 158 | } |
159 | - $minuendYear = (float)$minuendMatches[1]; |
|
160 | - $subtrahendYear = (float)$subtrahendMatches[1]; |
|
159 | + $minuendYear = (float) $minuendMatches[1]; |
|
160 | + $subtrahendYear = (float) $subtrahendMatches[1]; |
|
161 | 161 | $minuendRest = $minuendMatches[2]; |
162 | 162 | $subtrahendRest = $subtrahendMatches[2]; |
163 | 163 | |
164 | 164 | // calculate difference of years |
165 | 165 | $diff = $minuendYear - $subtrahendYear; |
166 | - if ( $minuendYear > 0.0 && $subtrahendYear < 0.0 ) { |
|
166 | + if ($minuendYear > 0.0 && $subtrahendYear < 0.0) { |
|
167 | 167 | $diff -= 1.0; // there is no year 0, remove it from difference |
168 | - } elseif ( $minuendYear < 0.0 && $subtrahendYear > 0.0 ) { |
|
168 | + } elseif ($minuendYear < 0.0 && $subtrahendYear > 0.0) { |
|
169 | 169 | $diff -= -1.0; // there is no year 0, remove it from negative difference |
170 | 170 | } |
171 | 171 | |
172 | 172 | // adjust for date within year by parsing the month-day part within the same year |
173 | - $minuendDateValue = $this->timeParser->parse( '+0000000000001970-' . $minuendRest ); |
|
174 | - $subtrahendDateValue = $this->timeParser->parse( '+0000000000001970-' . $subtrahendRest ); |
|
175 | - $minuendDateSeconds = $this->timeCalculator->getTimestamp( $minuendDateValue ); |
|
176 | - $subtrahendDateSeconds = $this->timeCalculator->getTimestamp( $subtrahendDateValue ); |
|
177 | - if ( $minuendDateSeconds < $subtrahendDateSeconds ) { |
|
173 | + $minuendDateValue = $this->timeParser->parse('+0000000000001970-'.$minuendRest); |
|
174 | + $subtrahendDateValue = $this->timeParser->parse('+0000000000001970-'.$subtrahendRest); |
|
175 | + $minuendDateSeconds = $this->timeCalculator->getTimestamp($minuendDateValue); |
|
176 | + $subtrahendDateSeconds = $this->timeCalculator->getTimestamp($subtrahendDateValue); |
|
177 | + if ($minuendDateSeconds < $subtrahendDateSeconds) { |
|
178 | 178 | // difference in the last year is actually less than one full year |
179 | 179 | // e. g. 1975-03-01 - 1974-09-01 is just six months |
180 | 180 | // (we don’t need sub-year precision in the difference, adjusting by 0.5 is enough) |
181 | 181 | $diff -= 0.5; |
182 | - } elseif ( $minuendDateSeconds > $subtrahendDateSeconds ) { |
|
182 | + } elseif ($minuendDateSeconds > $subtrahendDateSeconds) { |
|
183 | 183 | // difference in the last year is actually more than one full year |
184 | 184 | // e. g. 1975-09-01 - 1974-03-01 is 18 months |
185 | 185 | // (we don’t need sub-year precision in the difference, adjusting by 0.5 is enough) |
186 | 186 | $diff += 0.5; |
187 | 187 | } |
188 | 188 | |
189 | - $unit = $this->config->get( 'WBQualityConstraintsYearUnit' ); |
|
190 | - return UnboundedQuantityValue::newFromNumber( $diff, $unit ); |
|
189 | + $unit = $this->config->get('WBQualityConstraintsYearUnit'); |
|
190 | + return UnboundedQuantityValue::newFromNumber($diff, $unit); |
|
191 | 191 | } |
192 | 192 | |
193 | - public function isFutureTime( TimeValue $timeValue ) { |
|
194 | - return $this->timeValueComparer->isFutureTime( $timeValue ); |
|
193 | + public function isFutureTime(TimeValue $timeValue) { |
|
194 | + return $this->timeValueComparer->isFutureTime($timeValue); |
|
195 | 195 | } |
196 | 196 | |
197 | 197 | } |
@@ -13,8 +13,8 @@ discard block |
||
13 | 13 | * @param ContextCursor $cursor |
14 | 14 | * @return array |
15 | 15 | */ |
16 | - public function serialize( ContextCursor $cursor ) { |
|
17 | - if ( $cursor instanceof EntityContextCursor ) { |
|
16 | + public function serialize(ContextCursor $cursor) { |
|
17 | + if ($cursor instanceof EntityContextCursor) { |
|
18 | 18 | return [ |
19 | 19 | 't' => '\entity', |
20 | 20 | 'i' => $cursor->getEntityId(), |
@@ -30,9 +30,9 @@ discard block |
||
30 | 30 | 'h' => $cursor->getSnakHash(), |
31 | 31 | ]; |
32 | 32 | |
33 | - if ( $type === Context::TYPE_QUALIFIER || $type === Context::TYPE_REFERENCE ) { |
|
33 | + if ($type === Context::TYPE_QUALIFIER || $type === Context::TYPE_REFERENCE) { |
|
34 | 34 | $serialization['P'] = $cursor->getSnakPropertyId(); |
35 | - if ( $type === Context::TYPE_REFERENCE ) { |
|
35 | + if ($type === Context::TYPE_REFERENCE) { |
|
36 | 36 | /** @var ReferenceContextCursor $cursor */ |
37 | 37 | '@phan-var ReferenceContextCursor $cursor'; |
38 | 38 | $serialization['r'] = $cursor->getReferenceHash(); |
@@ -84,9 +84,9 @@ discard block |
||
84 | 84 | * @throws ConstraintParameterException |
85 | 85 | * @return CheckResult |
86 | 86 | */ |
87 | - public function checkConstraint( Context $context, Constraint $constraint ) { |
|
88 | - if ( $context->getSnakRank() === Statement::RANK_DEPRECATED ) { |
|
89 | - return new CheckResult( $context, $constraint, [], CheckResult::STATUS_DEPRECATED ); |
|
87 | + public function checkConstraint(Context $context, Constraint $constraint) { |
|
88 | + if ($context->getSnakRank() === Statement::RANK_DEPRECATED) { |
|
89 | + return new CheckResult($context, $constraint, [], CheckResult::STATUS_DEPRECATED); |
|
90 | 90 | } |
91 | 91 | |
92 | 92 | $parameters = []; |
@@ -94,28 +94,28 @@ discard block |
||
94 | 94 | |
95 | 95 | $snak = $context->getSnak(); |
96 | 96 | |
97 | - if ( !$snak instanceof PropertyValueSnak ) { |
|
97 | + if (!$snak instanceof PropertyValueSnak) { |
|
98 | 98 | // nothing to check |
99 | - return new CheckResult( $context, $constraint, $parameters, CheckResult::STATUS_COMPLIANCE ); |
|
99 | + return new CheckResult($context, $constraint, $parameters, CheckResult::STATUS_COMPLIANCE); |
|
100 | 100 | } |
101 | 101 | |
102 | 102 | $dataValue = $snak->getDataValue(); |
103 | 103 | |
104 | - list( $min, $max ) = $this->parseRangeParameter( |
|
104 | + list($min, $max) = $this->parseRangeParameter( |
|
105 | 105 | $constraintParameters, |
106 | 106 | $constraint->getConstraintTypeItemId(), |
107 | 107 | $dataValue->getType() |
108 | 108 | ); |
109 | 109 | $parameterKey = $dataValue->getType() === 'quantity' ? 'quantity' : 'date'; |
110 | - if ( $min !== null ) { |
|
111 | - $parameters['minimum_' . $parameterKey] = [ $min ]; |
|
110 | + if ($min !== null) { |
|
111 | + $parameters['minimum_'.$parameterKey] = [$min]; |
|
112 | 112 | } |
113 | - if ( $max !== null ) { |
|
114 | - $parameters['maximum_' . $parameterKey] = [ $max ]; |
|
113 | + if ($max !== null) { |
|
114 | + $parameters['maximum_'.$parameterKey] = [$max]; |
|
115 | 115 | } |
116 | 116 | |
117 | - if ( $this->rangeCheckerHelper->getComparison( $min, $dataValue ) > 0 || |
|
118 | - $this->rangeCheckerHelper->getComparison( $dataValue, $max ) > 0 |
|
117 | + if ($this->rangeCheckerHelper->getComparison($min, $dataValue) > 0 || |
|
118 | + $this->rangeCheckerHelper->getComparison($dataValue, $max) > 0 |
|
119 | 119 | ) { |
120 | 120 | $message = $this->getViolationMessage( |
121 | 121 | $context->getSnak()->getPropertyId(), |
@@ -131,16 +131,16 @@ discard block |
||
131 | 131 | |
132 | 132 | if ( |
133 | 133 | $dataValue instanceof TimeValue && |
134 | - ( $min instanceof NowValue || $max instanceof NowValue ) && |
|
135 | - $this->rangeCheckerHelper->isFutureTime( $dataValue ) |
|
134 | + ($min instanceof NowValue || $max instanceof NowValue) && |
|
135 | + $this->rangeCheckerHelper->isFutureTime($dataValue) |
|
136 | 136 | ) { |
137 | - $dependencyMetadata = DependencyMetadata::ofFutureTime( $dataValue ); |
|
137 | + $dependencyMetadata = DependencyMetadata::ofFutureTime($dataValue); |
|
138 | 138 | } else { |
139 | 139 | $dependencyMetadata = DependencyMetadata::blank(); |
140 | 140 | } |
141 | 141 | |
142 | - return ( new CheckResult( $context, $constraint, $parameters, $status, $message ) ) |
|
143 | - ->withMetadata( Metadata::ofDependencyMetadata( $dependencyMetadata ) ); |
|
142 | + return (new CheckResult($context, $constraint, $parameters, $status, $message)) |
|
143 | + ->withMetadata(Metadata::ofDependencyMetadata($dependencyMetadata)); |
|
144 | 144 | } |
145 | 145 | |
146 | 146 | /** |
@@ -151,8 +151,8 @@ discard block |
||
151 | 151 | * @throws ConstraintParameterException if the parameter is invalid or missing |
152 | 152 | * @return DataValue[] a pair of two data values, either of which may be null to signify an open range |
153 | 153 | */ |
154 | - private function parseRangeParameter( array $constraintParameters, $constraintTypeItemId, $type ) { |
|
155 | - switch ( $type ) { |
|
154 | + private function parseRangeParameter(array $constraintParameters, $constraintTypeItemId, $type) { |
|
155 | + switch ($type) { |
|
156 | 156 | case 'quantity': |
157 | 157 | return $this->constraintParameterParser->parseQuantityRangeParameter( |
158 | 158 | $constraintParameters, |
@@ -166,10 +166,10 @@ discard block |
||
166 | 166 | } |
167 | 167 | |
168 | 168 | throw new ConstraintParameterException( |
169 | - ( new ViolationMessage( 'wbqc-violation-message-value-needed-of-types-2' ) ) |
|
170 | - ->withEntityId( new ItemId( $constraintTypeItemId ), Role::CONSTRAINT_TYPE_ITEM ) |
|
171 | - ->withDataValueType( 'quantity' ) |
|
172 | - ->withDataValueType( 'time' ) |
|
169 | + (new ViolationMessage('wbqc-violation-message-value-needed-of-types-2')) |
|
170 | + ->withEntityId(new ItemId($constraintTypeItemId), Role::CONSTRAINT_TYPE_ITEM) |
|
171 | + ->withDataValueType('quantity') |
|
172 | + ->withDataValueType('time') |
|
173 | 173 | ); |
174 | 174 | } |
175 | 175 | |
@@ -181,7 +181,7 @@ discard block |
||
181 | 181 | * |
182 | 182 | * @return ViolationMessage |
183 | 183 | */ |
184 | - private function getViolationMessage( PropertyId $predicate, DataValue $value, $min, $max ) { |
|
184 | + private function getViolationMessage(PropertyId $predicate, DataValue $value, $min, $max) { |
|
185 | 185 | // possible message keys: |
186 | 186 | // wbqc-violation-message-range-quantity-closed |
187 | 187 | // wbqc-violation-message-range-quantity-leftopen |
@@ -194,39 +194,39 @@ discard block |
||
194 | 194 | // wbqc-violation-message-range-time-rightopen |
195 | 195 | // wbqc-violation-message-range-time-rightopen-leftnow |
196 | 196 | $messageKey = 'wbqc-violation-message-range'; |
197 | - $messageKey .= '-' . $value->getType(); |
|
197 | + $messageKey .= '-'.$value->getType(); |
|
198 | 198 | // at least one of $min, $max is set, otherwise there could be no violation |
199 | - $messageKey .= '-' . ( $min !== null ? ( $max !== null ? 'closed' : 'rightopen' ) : 'leftopen' ); |
|
200 | - if ( $min instanceof NowValue ) { |
|
199 | + $messageKey .= '-'.($min !== null ? ($max !== null ? 'closed' : 'rightopen') : 'leftopen'); |
|
200 | + if ($min instanceof NowValue) { |
|
201 | 201 | $messageKey .= '-leftnow'; |
202 | - } elseif ( $max instanceof NowValue ) { |
|
202 | + } elseif ($max instanceof NowValue) { |
|
203 | 203 | $messageKey .= '-rightnow'; |
204 | 204 | } |
205 | - $message = ( new ViolationMessage( $messageKey ) ) |
|
206 | - ->withEntityId( $predicate, Role::PREDICATE ) |
|
207 | - ->withDataValue( $value, Role::OBJECT ); |
|
208 | - if ( $min !== null && !( $min instanceof NowValue ) ) { |
|
209 | - $message = $message->withDataValue( $min, Role::OBJECT ); |
|
205 | + $message = (new ViolationMessage($messageKey)) |
|
206 | + ->withEntityId($predicate, Role::PREDICATE) |
|
207 | + ->withDataValue($value, Role::OBJECT); |
|
208 | + if ($min !== null && !($min instanceof NowValue)) { |
|
209 | + $message = $message->withDataValue($min, Role::OBJECT); |
|
210 | 210 | } |
211 | - if ( $max !== null && !( $max instanceof NowValue ) ) { |
|
212 | - $message = $message->withDataValue( $max, Role::OBJECT ); |
|
211 | + if ($max !== null && !($max instanceof NowValue)) { |
|
212 | + $message = $message->withDataValue($max, Role::OBJECT); |
|
213 | 213 | } |
214 | 214 | return $message; |
215 | 215 | } |
216 | 216 | |
217 | - public function checkConstraintParameters( Constraint $constraint ) { |
|
217 | + public function checkConstraintParameters(Constraint $constraint) { |
|
218 | 218 | $constraintParameters = $constraint->getConstraintParameters(); |
219 | 219 | $exceptions = []; |
220 | 220 | try { |
221 | 221 | // we don’t have a data value here, so get the type from the property instead |
222 | 222 | // (the distinction between data type and data value type is irrelevant for 'quantity' and 'time') |
223 | - $type = $this->propertyDataTypeLookup->getDataTypeIdForProperty( $constraint->getPropertyId() ); |
|
223 | + $type = $this->propertyDataTypeLookup->getDataTypeIdForProperty($constraint->getPropertyId()); |
|
224 | 224 | $this->parseRangeParameter( |
225 | 225 | $constraintParameters, |
226 | 226 | $constraint->getConstraintTypeItemId(), |
227 | 227 | $type |
228 | 228 | ); |
229 | - } catch ( ConstraintParameterException $e ) { |
|
229 | + } catch (ConstraintParameterException $e) { |
|
230 | 230 | $exceptions[] = $e; |
231 | 231 | } |
232 | 232 | return $exceptions; |
@@ -26,7 +26,7 @@ discard block |
||
26 | 26 | /** |
27 | 27 | * @param ConstraintLookup $lookup The lookup to which all queries are delegated. |
28 | 28 | */ |
29 | - public function __construct( ConstraintLookup $lookup ) { |
|
29 | + public function __construct(ConstraintLookup $lookup) { |
|
30 | 30 | $this->lookup = $lookup; |
31 | 31 | } |
32 | 32 | |
@@ -35,10 +35,10 @@ discard block |
||
35 | 35 | * |
36 | 36 | * @return Constraint[] |
37 | 37 | */ |
38 | - public function queryConstraintsForProperty( PropertyId $propertyId ) { |
|
38 | + public function queryConstraintsForProperty(PropertyId $propertyId) { |
|
39 | 39 | $id = $propertyId->getSerialization(); |
40 | - if ( !array_key_exists( $id, $this->cache ) ) { |
|
41 | - $this->cache[$id] = $this->lookup->queryConstraintsForProperty( $propertyId ); |
|
40 | + if (!array_key_exists($id, $this->cache)) { |
|
41 | + $this->cache[$id] = $this->lookup->queryConstraintsForProperty($propertyId); |
|
42 | 42 | } |
43 | 43 | return $this->cache[$id]; |
44 | 44 | } |
@@ -65,6 +65,6 @@ |
||
65 | 65 | * @param ?array $result |
66 | 66 | * @param array[] &$container |
67 | 67 | */ |
68 | - public function storeCheckResultInArray( ?array $result, array &$container ); |
|
68 | + public function storeCheckResultInArray(?array $result, array &$container); |
|
69 | 69 | |
70 | 70 | } |
@@ -35,7 +35,7 @@ discard block |
||
35 | 35 | * @codeCoverageIgnore This method is not supported. |
36 | 36 | */ |
37 | 37 | public function getType() { |
38 | - throw new LogicException( 'EntityContextCursor has no full associated context' ); |
|
38 | + throw new LogicException('EntityContextCursor has no full associated context'); |
|
39 | 39 | } |
40 | 40 | |
41 | 41 | public function getEntityId() { |
@@ -46,35 +46,35 @@ discard block |
||
46 | 46 | * @codeCoverageIgnore This method is not supported. |
47 | 47 | */ |
48 | 48 | public function getStatementPropertyId() { |
49 | - throw new LogicException( 'EntityContextCursor has no full associated context' ); |
|
49 | + throw new LogicException('EntityContextCursor has no full associated context'); |
|
50 | 50 | } |
51 | 51 | |
52 | 52 | /** |
53 | 53 | * @codeCoverageIgnore This method is not supported. |
54 | 54 | */ |
55 | 55 | public function getStatementGuid() { |
56 | - throw new LogicException( 'EntityContextCursor has no full associated context' ); |
|
56 | + throw new LogicException('EntityContextCursor has no full associated context'); |
|
57 | 57 | } |
58 | 58 | |
59 | 59 | /** |
60 | 60 | * @codeCoverageIgnore This method is not supported. |
61 | 61 | */ |
62 | 62 | public function getSnakPropertyId() { |
63 | - throw new LogicException( 'EntityContextCursor has no full associated context' ); |
|
63 | + throw new LogicException('EntityContextCursor has no full associated context'); |
|
64 | 64 | } |
65 | 65 | |
66 | 66 | /** |
67 | 67 | * @codeCoverageIgnore This method is not supported. |
68 | 68 | */ |
69 | 69 | public function getSnakHash() { |
70 | - throw new LogicException( 'EntityContextCursor has no full associated context' ); |
|
70 | + throw new LogicException('EntityContextCursor has no full associated context'); |
|
71 | 71 | } |
72 | 72 | |
73 | 73 | /** |
74 | 74 | * @codeCoverageIgnore This method is not supported. |
75 | 75 | */ |
76 | - public function &getMainArray( array &$container ) { |
|
77 | - throw new LogicException( 'EntityContextCursor cannot store check results' ); |
|
76 | + public function &getMainArray(array &$container) { |
|
77 | + throw new LogicException('EntityContextCursor cannot store check results'); |
|
78 | 78 | } |
79 | 79 | |
80 | 80 | /** |
@@ -83,14 +83,14 @@ discard block |
||
83 | 83 | * @param ?array $result must be null |
84 | 84 | * @param array[] &$container |
85 | 85 | */ |
86 | - public function storeCheckResultInArray( ?array $result, array &$container ) { |
|
87 | - if ( $result !== null ) { |
|
88 | - throw new LogicException( 'EntityContextCursor cannot store check results' ); |
|
86 | + public function storeCheckResultInArray(?array $result, array &$container) { |
|
87 | + if ($result !== null) { |
|
88 | + throw new LogicException('EntityContextCursor cannot store check results'); |
|
89 | 89 | } |
90 | 90 | |
91 | 91 | // this ensures that the claims array is present in the $container, |
92 | 92 | // populating it if necessary, even though we ignore the return value |
93 | - $this->getClaimsArray( $container ); |
|
93 | + $this->getClaimsArray($container); |
|
94 | 94 | } |
95 | 95 | |
96 | 96 | } |
@@ -27,15 +27,15 @@ discard block |
||
27 | 27 | * @param array[] &$container |
28 | 28 | * @return array |
29 | 29 | */ |
30 | - protected function &getClaimsArray( array &$container ) { |
|
30 | + protected function &getClaimsArray(array &$container) { |
|
31 | 31 | $entityId = $this->getEntityId(); |
32 | 32 | |
33 | - if ( !array_key_exists( $entityId, $container ) ) { |
|
33 | + if (!array_key_exists($entityId, $container)) { |
|
34 | 34 | $container[$entityId] = []; |
35 | 35 | } |
36 | 36 | $entityContainer = &$container[$entityId]; |
37 | 37 | |
38 | - if ( !array_key_exists( 'claims', $entityContainer ) ) { |
|
38 | + if (!array_key_exists('claims', $entityContainer)) { |
|
39 | 39 | $entityContainer['claims'] = []; |
40 | 40 | } |
41 | 41 | $claimsArray = &$entityContainer['claims']; |
@@ -49,25 +49,25 @@ discard block |
||
49 | 49 | * @param array[] &$container |
50 | 50 | * @return array |
51 | 51 | */ |
52 | - protected function &getStatementArray( array &$container ) { |
|
52 | + protected function &getStatementArray(array &$container) { |
|
53 | 53 | $statementPropertyId = $this->getStatementPropertyId(); |
54 | 54 | $statementGuid = $this->getStatementGuid(); |
55 | 55 | |
56 | - $claimsContainer = &$this->getClaimsArray( $container ); |
|
56 | + $claimsContainer = &$this->getClaimsArray($container); |
|
57 | 57 | |
58 | - if ( !array_key_exists( $statementPropertyId, $claimsContainer ) ) { |
|
58 | + if (!array_key_exists($statementPropertyId, $claimsContainer)) { |
|
59 | 59 | $claimsContainer[$statementPropertyId] = []; |
60 | 60 | } |
61 | 61 | $propertyContainer = &$claimsContainer[$statementPropertyId]; |
62 | 62 | |
63 | - foreach ( $propertyContainer as &$statement ) { |
|
64 | - if ( $statement['id'] === $statementGuid ) { |
|
63 | + foreach ($propertyContainer as &$statement) { |
|
64 | + if ($statement['id'] === $statementGuid) { |
|
65 | 65 | $statementArray = &$statement; |
66 | 66 | break; |
67 | 67 | } |
68 | 68 | } |
69 | - if ( !isset( $statementArray ) ) { |
|
70 | - $statementArray = [ 'id' => $statementGuid ]; |
|
69 | + if (!isset($statementArray)) { |
|
70 | + $statementArray = ['id' => $statementGuid]; |
|
71 | 71 | $propertyContainer[] = &$statementArray; |
72 | 72 | } |
73 | 73 | |
@@ -82,19 +82,19 @@ discard block |
||
82 | 82 | * @param array[] &$container |
83 | 83 | * @return array |
84 | 84 | */ |
85 | - abstract protected function &getMainArray( array &$container ); |
|
85 | + abstract protected function &getMainArray(array &$container); |
|
86 | 86 | |
87 | 87 | /** |
88 | 88 | * @param ?array $result |
89 | 89 | * @param array[] &$container |
90 | 90 | */ |
91 | - public function storeCheckResultInArray( ?array $result, array &$container ) { |
|
92 | - $mainArray = &$this->getMainArray( $container ); |
|
93 | - if ( !array_key_exists( 'results', $mainArray ) ) { |
|
91 | + public function storeCheckResultInArray(?array $result, array &$container) { |
|
92 | + $mainArray = &$this->getMainArray($container); |
|
93 | + if (!array_key_exists('results', $mainArray)) { |
|
94 | 94 | $mainArray['results'] = []; |
95 | 95 | } |
96 | 96 | |
97 | - if ( $result !== null ) { |
|
97 | + if ($result !== null) { |
|
98 | 98 | $mainArray['results'][] = $result; |
99 | 99 | } |
100 | 100 | } |
@@ -44,7 +44,7 @@ discard block |
||
44 | 44 | * @param ItemId $itemId |
45 | 45 | * @return self |
46 | 46 | */ |
47 | - public static function fromItemId( ItemId $itemId ) { |
|
47 | + public static function fromItemId(ItemId $itemId) { |
|
48 | 48 | $ret = new self; |
49 | 49 | $ret->itemId = $itemId; |
50 | 50 | return $ret; |
@@ -80,14 +80,14 @@ discard block |
||
80 | 80 | * @throws InvalidArgumentException |
81 | 81 | * @return self |
82 | 82 | */ |
83 | - public static function fromSnak( Snak $snak ) { |
|
84 | - switch ( true ) { |
|
83 | + public static function fromSnak(Snak $snak) { |
|
84 | + switch (true) { |
|
85 | 85 | case $snak instanceof PropertyValueSnak: |
86 | 86 | $dataValue = $snak->getDataValue(); |
87 | - if ( $dataValue instanceof EntityIdValue ) { |
|
87 | + if ($dataValue instanceof EntityIdValue) { |
|
88 | 88 | $itemId = $dataValue->getEntityId(); |
89 | - if ( $itemId instanceof ItemId ) { |
|
90 | - return self::fromItemId( $itemId ); |
|
89 | + if ($itemId instanceof ItemId) { |
|
90 | + return self::fromItemId($itemId); |
|
91 | 91 | } |
92 | 92 | } |
93 | 93 | break; |
@@ -97,7 +97,7 @@ discard block |
||
97 | 97 | return self::noValue(); |
98 | 98 | } |
99 | 99 | |
100 | - throw new InvalidArgumentException( 'Snak must contain item ID value or be a somevalue / novalue snak' ); |
|
100 | + throw new InvalidArgumentException('Snak must contain item ID value or be a somevalue / novalue snak'); |
|
101 | 101 | } |
102 | 102 | |
103 | 103 | /** |
@@ -135,8 +135,8 @@ discard block |
||
135 | 135 | * @return ItemId |
136 | 136 | */ |
137 | 137 | public function getItemId() { |
138 | - if ( !$this->isValue() ) { |
|
139 | - throw new DomainException( 'This value does not contain an item ID.' ); |
|
138 | + if (!$this->isValue()) { |
|
139 | + throw new DomainException('This value does not contain an item ID.'); |
|
140 | 140 | } |
141 | 141 | return $this->itemId; |
142 | 142 | } |
@@ -148,14 +148,14 @@ discard block |
||
148 | 148 | * @param Snak $snak |
149 | 149 | * @return bool |
150 | 150 | */ |
151 | - public function matchesSnak( Snak $snak ) { |
|
152 | - switch ( true ) { |
|
151 | + public function matchesSnak(Snak $snak) { |
|
152 | + switch (true) { |
|
153 | 153 | case $snak instanceof PropertyValueSnak: |
154 | 154 | $dataValue = $snak->getDataValue(); |
155 | 155 | return $this->isValue() && |
156 | 156 | $dataValue instanceof EntityIdValue && |
157 | 157 | $dataValue->getEntityId() instanceof ItemId && |
158 | - $dataValue->getEntityId()->equals( $this->getItemId() ); |
|
158 | + $dataValue->getEntityId()->equals($this->getItemId()); |
|
159 | 159 | case $snak instanceof PropertySomeValueSnak: |
160 | 160 | return $this->isSomeValue(); |
161 | 161 | case $snak instanceof PropertyNoValueSnak: |