Robert Vogel has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/398659 )
Change subject: Refactored UserMiniProfile and UserProfileImage DFD-Module
......................................................................
Refactored UserMiniProfile and UserProfileImage DFD-Module
* Moved user setting to Extension:BlueSpiceAvatars
* Therefore BSF only handles "anon" and "default"
Change-Id: I4958c75cc66b5c9c863e0471ca3c5fe511dad0b1
---
M includes/outputhandler/views/view.UserMiniProfile.php
M src/DynamicFileDispatcher/UserProfileImage.php
A src/DynamicFileDispatcher/UserProfileImage/AnonImage.php
A src/DynamicFileDispatcher/UserProfileImage/DefaultImage.php
D src/DynamicFileDispatcher/UserProfileImage/Image.php
D src/DynamicFileDispatcher/UserProfileImage/ImageExternal.php
6 files changed, 72 insertions(+), 209 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/BlueSpiceFoundation
refs/changes/59/398659/1
diff --git a/includes/outputhandler/views/view.UserMiniProfile.php
b/includes/outputhandler/views/view.UserMiniProfile.php
index 5bc65b1..5c67d6b 100644
--- a/includes/outputhandler/views/view.UserMiniProfile.php
+++ b/includes/outputhandler/views/view.UserMiniProfile.php
@@ -1,7 +1,8 @@
<?php
-use MediaWiki\MediaWikiServices;
use BlueSpice\DynamicFileDispatcher\Params;
+use BlueSpice\Services;
+use BlueSpice\DynamicFileDispatcher\UserProfileImage;
/**
* This class provides a miniprofile for users.
* @package BlueSpice_AdapterMW
@@ -31,15 +32,14 @@
: $this->aDefaultClasses;
$params = array_merge( $this->mOptions, [
- Params::MODULE => 'userprofileimage',
- 'username' => $this->mOptions['user']->getName(),
+ Params::MODULE => UserProfileImage::MODULE_NAME,
+ UserProfileImage::USERNAME =>
$this->mOptions['user']->getName(),
+ UserProfileImage::WIDTH =>
(int)$this->mOptions['width'],
+ UserProfileImage::HEIGHT =>
(int)$this->mOptions['height']
]);
- $dfdUrlBuilder = MediaWikiServices::getInstance()->getService(
- 'BSDynamicFileDispatcherUrlBuilder'
- );
- $url = $dfdUrlBuilder->build(
- new Params( $params )
- );
+
+ $dfdUrlBuilder =
Services::getInstance()->getBSDynamicFileDispatcherUrlBuilder();
+ $url = $dfdUrlBuilder->build( new Params( $params ) );
$aOut = array();
$aOut[] = '<div class="'. implode( ' ', $aClasses ).'"
title="'.$this->mOptions['userdisplayname'].'">';
@@ -101,69 +101,6 @@
);
}
- if( empty( $this->mOptions['userimagesrc'] ) ) {
- $this->mOptions['userimagesrc'] =
$GLOBALS['wgScriptPath']
-
."/extensions/BlueSpiceFoundation/resources/bluespice/images/bs-user-default-image.png";
- }
-
- if ( $oUser->isAnon() ) {
- $this->mOptions['userimagesrc'] =
$GLOBALS['wgScriptPath']
-
."/extensions/BlueSpiceFoundation/resources/bluespice/images/bs-user-anon-image.png";
- $this->mOptions['linktargethref'] = '';
- } else {
- $sUserImageName = BsConfig::getVarForUser(
'MW::UserImage', $oUser );
- if ( !empty( $sUserImageName ) ) { //Image given as a
url
-
- if ( $sUserImageName{0} == '/' ) {
- //relative url from own system given
- $this->mOptions['userimagesrc'] =
$sUserImageName;
- } elseif ( $this->isExternalUrl(
$sUserImageName ) ) {
- $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 {
- $this->setOptionsFromRepoFile(
$sUserImageName );
- }
- } 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();
- }
- }
- }
-
Hooks::run( 'UserMiniProfileAfterInit', array( $this ) );
$this->bIsInit = true;
}
@@ -178,26 +115,5 @@
public function getOptions() {
return $this->mOptions;
- }
-
- protected function isExternalUrl( $sMaybeExternalUrl ) {
- return substr( $sMaybeExternalUrl, 0, 4 ) == "http";
- }
-
- protected function setOptionsFromRepoFile( $sUserImageName ) {
- $oUserImageFile = wfFindFile( $sUserImageName );
- if( $oUserImageFile ) {
- $oUserThumbnail = $oUserImageFile->transform(
- array(
- 'width' => $this->mOptions['width'],
- 'height' => $this->mOptions['height']
- )
- );
- if ( $oUserThumbnail ) {
- $this->mOptions['userimagesrc'] =
$oUserThumbnail->getUrl();
- $this->mOptions['width'] =
$oUserThumbnail->getWidth();
- $this->mOptions['height'] =
$oUserThumbnail->getHeight();
- }
- }
}
}
\ No newline at end of file
diff --git a/src/DynamicFileDispatcher/UserProfileImage.php
b/src/DynamicFileDispatcher/UserProfileImage.php
index 0dc9161..5e37624 100644
--- a/src/DynamicFileDispatcher/UserProfileImage.php
+++ b/src/DynamicFileDispatcher/UserProfileImage.php
@@ -2,10 +2,20 @@
namespace BlueSpice\DynamicFileDispatcher;
+use BlueSpice\DynamicFileDispatcher\UserProfileImage\AnonImage;
+use BlueSpice\DynamicFileDispatcher\UserProfileImage\DefaultImage;
+
class UserProfileImage extends Module {
+ const MODULE_NAME = 'userprofileimage';
const USERNAME = 'username';
const WIDTH = 'width';
const HEIGHT = 'height';
+
+ /**
+ *
+ * @var \User
+ */
+ protected $user = null;
public function getParamDefinition() {
return array_merge( parent::getParamDefinition(), [
@@ -37,39 +47,14 @@
}
}
- protected function getImageSource() {
- //This is temporay code until the UserMiniProfile gets a rewrite
- $miniprofile = \BsCore::getInstance()->getUserMiniProfile(
- \User::newFromName( $this->params[static::USERNAME] ),
- [
- 'width' => $this->params[static::WIDTH],
- 'height' => $this->params[static::HEIGHT],
- ]
- );
- $options = $miniprofile->getOptions();
- return $options['userimagesrc'];
- }
-
- protected function isExternalUrl( $sMaybeExternalUrl ) {
- return substr( $sMaybeExternalUrl, 0, 4 ) == "http";
- }
-
/**
* @return File
*/
public function getFile() {
- $imgSrc = $this->getImageSource();
- if( $this->isExternalUrl( $imgSrc ) ) {
- return new
\BlueSpice\DynamicFileDispatcher\UserProfileImage\ImageExternal(
- $this,
- $imgSrc,
- \User::newFromName(
$this->params[static::USERNAME] )
- );
+ $this->user = \User::newFromName(
$this->params[static::USERNAME] );
+ if( $this->user->isAnon() ) {
+ return new AnonImage( $this );
}
- return new
\BlueSpice\DynamicFileDispatcher\UserProfileImage\Image(
- $this,
- $imgSrc,
- \User::newFromName( $this->params[static::USERNAME] )
- );
+ return new DefaultImage( $this );
}
-}
\ No newline at end of file
+}
diff --git a/src/DynamicFileDispatcher/UserProfileImage/AnonImage.php
b/src/DynamicFileDispatcher/UserProfileImage/AnonImage.php
new file mode 100644
index 0000000..7e520e5
--- /dev/null
+++ b/src/DynamicFileDispatcher/UserProfileImage/AnonImage.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace BlueSpice\DynamicFileDispatcher\UserProfileImage;
+use \BlueSpice\DynamicFileDispatcher\Module;
+
+class AnonImage extends \BlueSpice\DynamicFileDispatcher\File {
+
+ /**
+ * Sets the headers for given \WebResponse
+ * @param \WebResponse $response
+ * @return void
+ */
+ public function setHeaders( \WebResponse $response ) {
+ $response->header( 'Content-type: '.$this->getMimeType(), true
);
+
+ $IP = $GLOBALS['IP'];
+
+ readfile(
"$IP/extensions/BlueSpiceFoundation/resources/bluespice/images/bs-user-anon-image.png"
);
+ }
+
+ public function getMimeType() {
+ return 'image/png';
+ }
+}
\ No newline at end of file
diff --git a/src/DynamicFileDispatcher/UserProfileImage/DefaultImage.php
b/src/DynamicFileDispatcher/UserProfileImage/DefaultImage.php
new file mode 100644
index 0000000..c631314
--- /dev/null
+++ b/src/DynamicFileDispatcher/UserProfileImage/DefaultImage.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace BlueSpice\DynamicFileDispatcher\UserProfileImage;
+use \BlueSpice\DynamicFileDispatcher\Module;
+
+class DefaultImage extends \BlueSpice\DynamicFileDispatcher\File {
+
+ /**
+ * Sets the headers for given \WebResponse
+ * @param \WebResponse $response
+ * @return void
+ */
+ public function setHeaders( \WebResponse $response ) {
+ $response->header( 'Content-type: '.$this->getMimeType(), true
);
+
+ $IP = $GLOBALS['IP'];
+
+ readfile(
"$IP/extensions/BlueSpiceFoundation/resources/bluespice/images/bs-user-default-image.png"
);
+ }
+
+ public function getMimeType() {
+ return 'image/png';
+ }
+}
\ No newline at end of file
diff --git a/src/DynamicFileDispatcher/UserProfileImage/Image.php
b/src/DynamicFileDispatcher/UserProfileImage/Image.php
deleted file mode 100644
index 28d9ab2..0000000
--- a/src/DynamicFileDispatcher/UserProfileImage/Image.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-namespace BlueSpice\DynamicFileDispatcher\UserProfileImage;
-use \BlueSpice\DynamicFileDispatcher\Module;
-
-class Image extends \BlueSpice\DynamicFileDispatcher\File {
- /**
- *
- * @var string
- */
- protected $src = '';
-
- /**
- *
- * @var \User
- */
- protected $user = null;
-
- /**
- *
- * @param Module $dfd
- * @param sring $src
- * @param \User $user
- */
- public function __construct( Module $dfd, $src, $user ) {
- parent::__construct( $dfd );
- $this->src = $src;
- $this->user = $user;
- }
-
- /**
- * Sets the headers for given \WebResponse
- * @param \WebResponse $response
- * @return void
- */
- public function setHeaders( \WebResponse $response ) {
- $response->header(
- 'Content-type: '.$this->getMimeType(),
- true
- );
- //This is temporay code until the UserMiniProfile gets a rewrite
- $path = $GLOBALS['IP'];
- $scriptPath = $this->dfd->getConfig()->get( 'ScriptPath' );
- if( $scriptPath && $scriptPath != "" ) {
- $countDirs = substr_count( $scriptPath, '/' );
- $i = 0;
- while( $i < $countDirs ) {
- $path = dirname( $path );
- $i++;
- }
- }
- $path = str_replace(
- '/nsfr_img_auth.php/',
- '/images/',
- \BsFileSystemHelper::normalizePath( $path.$this->src )
- );
-
- readfile( $path );
- }
-
- public function getMimeType() {
- return 'image/png';
- }
-}
\ No newline at end of file
diff --git a/src/DynamicFileDispatcher/UserProfileImage/ImageExternal.php
b/src/DynamicFileDispatcher/UserProfileImage/ImageExternal.php
deleted file mode 100644
index 1102dd2..0000000
--- a/src/DynamicFileDispatcher/UserProfileImage/ImageExternal.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace BlueSpice\DynamicFileDispatcher\UserProfileImage;
-
-class ImageExternal extends Image {
-
- /**
- * Sets the headers for given \WebResponse
- * @param \WebResponse $response
- * @return void
- */
- public function setHeaders( \WebResponse $response ) {
- $this->dfd->getContext()->getRequest()->response()->header(
- "Location:$this->src",
- true
- );
- }
-
- public function getMimeType() {
- return '';
- }
-}
\ No newline at end of file
--
To view, visit https://gerrit.wikimedia.org/r/398659
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4958c75cc66b5c9c863e0471ca3c5fe511dad0b1
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/BlueSpiceFoundation
Gerrit-Branch: master
Gerrit-Owner: Robert Vogel <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits