case self::AS_SUCCESS_NEW_ARTICLE:
$query = $resultDetails['redirect'] ? 'redirect=no' : '';
if ( $extraQueryRedirect ) {
- if ( $query === '' ) {
- $query = $extraQueryRedirect;
- } else {
- $query = $query . '&' . $extraQueryRedirect;
+ if ( $query !== '' ) {
+ $query .= '&';
}
+ $query .= $extraQueryRedirect;
}
$anchor = $resultDetails['sectionanchor'] ?? '';
$out->redirect( $this->mTitle->getFullURL( $query ) . $anchor );
);
if ( $resultDetails['redirect'] ) {
- if ( $extraQuery == '' ) {
- $extraQuery = 'redirect=no';
- } else {
- $extraQuery = 'redirect=no&' . $extraQuery;
+ if ( $extraQuery !== '' ) {
+ $extraQuery = '&' . $extraQuery;
}
+ $extraQuery = 'redirect=no' . $extraQuery;
}
if ( $extraQueryRedirect ) {
- if ( $extraQuery === '' ) {
- $extraQuery = $extraQueryRedirect;
- } else {
- $extraQuery = $extraQuery . '&' . $extraQueryRedirect;
+ if ( $extraQuery !== '' ) {
+ $extraQuery .= '&';
}
+ $extraQuery .= $extraQueryRedirect;
}
$out->redirect( $this->mTitle->getFullURL( $extraQuery ) . $sectionanchor );
return $wgParser->guessLegacySectionNameFromWikiText( $text );
}
// Meanwhile, real browsers get real anchors
- return $wgParser->guessSectionNameFromWikiText( $text );
+ $name = $wgParser->guessSectionNameFromWikiText( $text );
+ // With one little caveat: per T216029, fragments in HTTP redirects need to be urlencoded,
+ // otherwise Chrome double-escapes the rest of the URL.
+ return '#' . urlencode( mb_substr( $name, 1 ) );
}
/**