"PhanTypeArraySuspiciousNullable",
// approximate error count: 26
"PhanTypeComparisonFromArray",
- // approximate error count: 2
- "PhanTypeComparisonToArray",
// approximate error count: 63
"PhanTypeInvalidDimOffset",
- // approximate error count: 6
- "PhanTypeInvalidExpressionArrayDestructuring",
// approximate error count: 7
"PhanTypeInvalidLeftOperandOfIntegerOp",
// approximate error count: 2
insertions into links tables.
* Category::newFromID( $id )->getID() will now return $id without any
validation, to avoid a mostly unnecessary DB query.
+* On Special:Version, the name for an extension can no longer be arbitrary
+ html when no link is specified.
== Compatibility ==
MediaWiki 1.33 requires PHP 7.0.13 or later. Although HHVM 3.18.5 or later is
notifications.
&$title: Title object of page
&$url: string value as output (out parameter, can modify)
-$query: query options passed to Title::getCanonicalURL()
+$query: query options as string passed to Title::getCanonicalURL()
'GetContentModels': Add content models to the list of available models.
&$models: array containing current model list, as strings. Extensions should add to this list.
'GetFullURL': Modify fully-qualified URLs used in redirects/export/offsite data.
&$title: Title object of page
&$url: string value as output (out parameter, can modify)
-$query: query options passed to Title::getFullURL()
+$query: query options as string passed to Title::getFullURL()
'GetHumanTimestamp': Pre-emptively override the human-readable timestamp
generated by MWTimestamp::getHumanTimestamp(). Return false in this hook to use
'GetInternalURL': Modify fully-qualified URLs used for squid cache purging.
&$title: Title object of page
&$url: string value as output (out parameter, can modify)
-$query: query options passed to Title::getInternalURL()
+$query: query options as string passed to Title::getInternalURL()
'GetIP': modify the ip of the current user (called only once).
&$ip: string holding the ip as determined so far
hack that Title::getLocalURL uses in your own extension.
&$title: Title object of page
&$url: string value as output (out parameter, can modify)
-$query: query options passed to Title::getLocalURL()
+$query: query options as string passed to Title::getLocalURL()
'GetLocalURL::Article': Modify local URLs specifically pointing to article paths
without any fancy queries or variants.
'GetLocalURL::Internal': Modify local URLs to internal pages.
&$title: Title object of page
&$url: string value as output (out parameter, can modify)
-$query: query options passed to Title::getLocalURL()
+$query: query options as string passed to Title::getLocalURL()
'GetLogTypesOnUser': Add log types where the target is a userpage
&$types: Array of log types
* protocol-relative, the URL will be expanded to http://
*
* @see self::getLocalURL for the arguments.
- * @param string $query
- * @param string|bool $query2
+ * @param string|string[] $query
+ * @param string|bool $query2 Deprecated
* @return string The URL
*/
public function getInternalURL( $query = '', $query2 = false ) {
* NOTE: Unlike getInternalURL(), the canonical URL includes the fragment
*
* @see self::getLocalURL for the arguments.
- * @param string $query
- * @param string|bool $query2
+ * @param string|string[] $query
+ * @param string|bool $query2 Deprecated
* @return string The URL
* @since 1.18
*/
* the name of the class defining the property, <component> is the MediaWiki component
* (extension, skin etc.) for use in the deprecation warning) or null if it is MediaWiki.
* E.g. [ 'mNewRev' => [ '1.32', 'DifferenceEngine', null ]
- * @var string[]
+ * @var string[][]
*/
protected $deprecatedPublicProperties = [];
public function set( $key, $value, $expire = 0, $flags = 0 ) {
$result = wincache_ucache_set( $key, serialize( $value ), $expire );
+ // false positive, wincache_ucache_set returns an empty array
+ // in some circumstances.
+ // @phan-suppress-next-line PhanTypeComparisonToArray
return ( $result === [] || $result === true );
}
public function add( $key, $value, $exptime = 0, $flags = 0 ) {
$result = wincache_ucache_add( $key, serialize( $value ), $exptime );
+ // false positive, wincache_ucache_add returns an empty array
+ // in some circumstances.
+ // @phan-suppress-next-line PhanTypeComparisonToArray
return ( $result === [] || $result === true );
}
*/
private function ensureNewline( $str ) {
$end = substr( $str, -1 );
- if ( $end === false || $end === "\n" ) {
+ if ( $end === false || $end === '' || $end === "\n" ) {
return $str;
}
return $str . "\n";
}
}
- array_walk( $modules, [ 'self', 'trimArray' ] );
+ array_walk( $modules, [ self::class, 'trimArray' ] );
return Xml::encodeJsCall(
'mw.loader.register',
* @param User $user
* @param string $editToken Edit token
* @param Config|null $config optional for backwards compatibility
- * @return string|null Null on success or string on error
+ * @return null|string|array Null on success, string on error, or array on
+ * hook error
*/
public static function getPermissionsError( $user, $editToken, Config $config = null ) {
if ( $config === null ) {
[ 'class' => 'mw-version-ext-name' ]
);
} else {
- $extensionNameLink = $extensionName;
+ $extensionNameLink = htmlspecialchars( $extensionName );
}
// ... and the version information
// Set the user limit key
if ( $userLimit !== false ) {
+ // phan is confused because &can-bypass's value is a bool, so it assumes
+ // that $userLimit is also a bool here.
+ // @phan-suppress-next-line PhanTypeInvalidExpressionArrayDestructuring
list( $max, $period ) = $userLimit;
wfDebug( __METHOD__ . ": effective user limit: $max in {$period}s\n" );
$keys[$cache->makeKey( 'limiter', $action, 'user', $id )] = $userLimit;
$triggered = false;
foreach ( $keys as $key => $limit ) {
+ // phan is confused because &can-bypass's value is a bool, so it assumes
+ // that $userLimit is also a bool here.
+ // @phan-suppress-next-line PhanTypeInvalidExpressionArrayDestructuring
list( $max, $period ) = $limit;
$summary = "(limit $max in {$period}s)";
$count = $cache->get( $key );
}
} elseif ( $dispLen > $length && $dispLen > strlen( $ellipsis ) ) {
# String in fact does need truncation, the truncation point was OK.
+ // @phan-suppress-next-line PhanTypeInvalidExpressionArrayDestructuring
list( $ret, $openTags ) = $maybeState; // reload state
$ret = $this->removeBadCharLast( $ret ); // multi-byte char fix
$ret .= $ellipsis; // add ellipsis