jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/356192 )
Change subject: BSFoundation: Fixes/Improvements for UserMiniProfile
......................................................................
BSFoundation: Fixes/Improvements for UserMiniProfile
* external/internal link to an image works again
* removed usage of deprecated BsCore::getUserDisplayName
* imrpoved error handling
* added TODO's and descriptions
* removed $this->mOptions['userimagesrc'] = $this->mOptions['userimagesrc']; :D
* used wfParseUrl instead of parse_url
* removed image extension check, as it was only checked, when it was
awaylable and MW::ImageExtensions should only be used for uploads
* added check if the given url is valid
* mw default way File:<username> works again
=> #6473
=> Needs cherry-pick to REL1_27
Change-Id: I7e00493f67c3b984412c6beafab2793cd1d8674b
---
M includes/outputhandler/views/view.UserMiniProfile.php
1 file changed, 75 insertions(+), 39 deletions(-)
Approvals:
Robert Vogel: Looks good to me, approved
jenkins-bot: Verified
diff --git a/includes/outputhandler/views/view.UserMiniProfile.php
b/includes/outputhandler/views/view.UserMiniProfile.php
index 9a794ca..6c38167 100644
--- a/includes/outputhandler/views/view.UserMiniProfile.php
+++ b/includes/outputhandler/views/view.UserMiniProfile.php
@@ -50,63 +50,99 @@
}
/**
+ * TODO: Rewrite and separate all this into single methods
* Initializes the views members with the information from given
options.
* @param bool $bReInit
* @return null
*/
public function init( $bReInit = false ) {
global $wgUrlProtocols;
- if ( $this->bIsInit == true && $bReInit == false ) return;
+ if ( $this->bIsInit == true && $bReInit == false ) {
+ return;
+ }
$oUser = $this->mOptions['user'];
-
- if ( !isset( $this->mOptions['width'] ) )
$this->mOptions['width'] = 32;
- if( !isset( $this->mOptions['height'] ) )
$this->mOptions['height'] = 32;
-
- if ( !isset( $this->mOptions['userdisplayname'] ) ) {
- $this->mOptions['userdisplayname'] =
BsCore::getUserDisplayName( $oUser );
+ if( !$oUser instanceof User ) {
+ throw new BsException( "No User Given. ".__CLASS__."
".__METHOD__ );
}
+ if ( !isset( $this->mOptions['width'] ) ) {
+ $this->mOptions['width'] = 32;
+ }
+ if( !isset( $this->mOptions['height'] ) ) {
+ $this->mOptions['height'] = 32;
+ }
+
+ if ( empty($this->mOptions['userdisplayname'] ) ) {
+ $this->mOptions['userdisplayname'] = empty(
$oUser->getRealName() )
+ ? $oUser->getName()
+ : $oUser->getRealName()
+ ;
+ }
+
+ //link can be empty for an anon user
if ( !isset( $this->mOptions['linktargethref'] ) ) {
- $this->mOptions['linktargethref'] = htmlspecialchars(
$oUser->getUserPage()->getLinkURL(), ENT_QUOTES, 'UTF-8' );
+ $this->mOptions['linktargethref'] = htmlspecialchars(
+ $oUser->getUserPage()->getLinkURL(),
+ ENT_QUOTES,
+ 'UTF-8'
+ );
}
- if ( isset ( $this->mOptions['userimagesrc'] ) ) {
- $this->mOptions['userimagesrc'] =
$this->mOptions['userimagesrc'];
- } elseif ( $oUser->isAnon() ){
+ if( empty( $this->mOptions['userimagesrc'] ) ) {
+ $this->mOptions['userimagesrc'] = BsConfig::get(
'MW::DefaultUserImage' );
+ }
+
+ if ( $oUser->isAnon() ) {
$this->mOptions['userimagesrc'] = BsConfig::get(
'MW::AnonUserImage' );
$this->mOptions['linktargethref'] = '';
} else {
- $sUserImageName =
BsConfig::getVarForUser('MW::UserImage', $oUser);
- $this->mOptions['userimagesrc'] = BsConfig::get(
'MW::DefaultUserImage' );
- if ( !empty( $sUserImageName ) ) {
- $aParsedUrl = parse_url( $sUserImageName );
- if ( $sUserImageName{0} == '/' ) {
- $this->mOptions['userimagesrc'] =
$sUserImageName;
- } elseif ( isset( $aParsedUrl['scheme'] ) &&
in_array( $aParsedUrl['scheme'], $wgUrlProtocols ) ) {
- $aPathInfo = pathinfo(
$aParsedUrl['path'] );
- $aFileExtWhitelist = BsConfig::get(
'MW::ImageExtensions' );
- $this->mOptions['userimagesrc'] =
$aParsedUrl['scheme'].'://'.$aParsedUrl['host'].$aParsedUrl['path'];
+ $sUserImageName = BsConfig::getVarForUser(
'MW::UserImage', $oUser );
+ if ( !empty( $sUserImageName ) ) { //Image given as a
url
- if ( isset( $aPathInfo['extension'] )
&& !in_array( strtolower( $aPathInfo['extension'] ), $aFileExtWhitelist ) ){
- $this->mOptions['userimagesrc']
= BsConfig::get( 'MW::AnonUserImage' );
+ if ( $sUserImageName{0} == '/' ) {
+ //relative url from own system given
+ $this->mOptions['userimagesrc'] =
$sUserImageName;
+ } elseif ( $aParsedUrl = wfParseUrl(
$sUserImageName ) ) {
+ //external url
+ //TODO: Fix, when system is call via
https:// and the given
+ //url is http:// the browser will block
the image
+ $bAllowedProtocoll = in_array(
+
$aParsedUrl['scheme'].$aParsedUrl['delimiter'],
+ $wgUrlProtocols
+ );
+ if( $bAllowedProtocoll ) {
+ $sQuery = isset(
$aParsedUrl['query'] ) ?
+
"?{$aParsedUrl['query']}"
+ : ''
+ ;
+ $this->mOptions['userimagesrc']
=
+ $aParsedUrl['scheme']
+
.$aParsedUrl['delimiter']
+ .$aParsedUrl['host']
+ .$aParsedUrl['path']
+ .$sQuery
+ ;
}
- } else {
- $oUserImageFile =
RepoGroup::singleton()->findFile( Title::newFromText( $sUserImageName, NS_FILE
) );
- $oUserThumbnail = false;
- if ( $oUserImageFile !== false ) {
- $oUserThumbnail =
$oUserImageFile->transform(
- array(
- 'width' =>
$this->mOptions['width'],
- 'height' =>
$this->mOptions['height']
- )
- );
- }
- if ( $oUserThumbnail !== false ) {
- $this->mOptions['userimagesrc']
= $oUserThumbnail->getUrl();
- $this->mOptions['width'] =
$oUserThumbnail->getWidth();
- $this->mOptions['height'] =
$oUserThumbnail->getHeight();
- }
+ }
+ } else {
+ //MW default File:<username>
+ $oUserImageFile =
RepoGroup::singleton()->findFile(
+ Title::newFromText( $sUserImageName,
NS_FILE )
+ );
+ $oUserThumbnail = false;
+ if ( $oUserImageFile !== false ) {
+ $oUserThumbnail =
$oUserImageFile->transform(
+ array(
+ 'width' =>
$this->mOptions['width'],
+ 'height' =>
$this->mOptions['height']
+ )
+ );
+ }
+ if ( $oUserThumbnail !== false ) {
+ $this->mOptions['userimagesrc'] =
$oUserThumbnail->getUrl();
+ $this->mOptions['width'] =
$oUserThumbnail->getWidth();
+ $this->mOptions['height'] =
$oUserThumbnail->getHeight();
}
}
}
--
To view, visit https://gerrit.wikimedia.org/r/356192
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I7e00493f67c3b984412c6beafab2793cd1d8674b
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/BlueSpiceFoundation
Gerrit-Branch: master
Gerrit-Owner: Pwirth <[email protected]>
Gerrit-Reviewer: Ljonka <[email protected]>
Gerrit-Reviewer: Mglaser <[email protected]>
Gerrit-Reviewer: Robert Vogel <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits