From 12bb8c055bc52e0f8ac81db09ce5b4747d8aa97f Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Thu, 19 Oct 2017 15:36:10 +0200 Subject: [PATCH] Add avatar to UserExtraInfo (#130) * Add avatar to UserExtraInfo Signed-off-by: Lukas Reschke * Only add UserExtraInfo is version higher than 13 Signed-off-by: Lukas Reschke --- appinfo/info.xml | 2 +- lib/Controller/WopiController.php | 64 ++++++++++++++++++++++--------- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index 42052817..8b631a3e 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -12,7 +12,7 @@ office integration - + https://nextcloud.com/collaboraonline/ diff --git a/lib/Controller/WopiController.php b/lib/Controller/WopiController.php index 51425ea2..69a216ef 100644 --- a/lib/Controller/WopiController.php +++ b/lib/Controller/WopiController.php @@ -1,6 +1,6 @@ + * @copyright Copyright (c) 2016-2017 Lukas Reschke * * @license GNU AGPL version 3 or any later version * @@ -24,35 +24,51 @@ namespace OCA\Richdocuments\Controller; use OC\Files\View; use OCA\Richdocuments\Db\Wopi; use OCA\Richdocuments\Helper; -use OCA\Richdocuments\WOPI\Parser; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\JSONResponse; use OCP\Files\File; use OCP\Files\IRootFolder; +use OCP\IConfig; use OCP\IRequest; -use OCP\IUserManager; +use OCP\IURLGenerator; use OCP\AppFramework\Http\StreamResponse; +use OCP\IUserManager; class WopiController extends Controller { /** @var IRootFolder */ private $rootFolder; + /** @var IURLGenerator */ + private $urlGenerator; + /** @var IConfig */ + private $config; + /** @var IUserManager */ + private $userManager; // Signifies LOOL that document has been changed externally in this storage const LOOL_STATUS_DOC_CHANGED = 1010; /** * @param string $appName + * @param string $UserId * @param IRequest $request * @param IRootFolder $rootFolder - * @param string $UserId + * @param IURLGenerator $urlGenerator + * @param IConfig $config + * @param IUserManager $userManager */ public function __construct($appName, $UserId, IRequest $request, - IRootFolder $rootFolder) { + IRootFolder $rootFolder, + IURLGenerator $urlGenerator, + IConfig $config, + IUserManager $userManager) { parent::__construct($appName, $request); $this->rootFolder = $rootFolder; + $this->urlGenerator = $urlGenerator; + $this->config = $config; + $this->userManager = $userManager; } /** @@ -88,19 +104,31 @@ class WopiController extends Controller { return new JSONResponse([], Http::STATUS_FORBIDDEN); } - return new JSONResponse( - [ - 'BaseFileName' => $file->getName(), - 'Size' => $file->getSize(), - 'Version' => $version, - 'UserId' => $res['editor'] !== '' ? $res['editor'] : 'Guest user', - 'OwnerId' => $res['owner'], - 'UserFriendlyName' => $res['editor'] !== '' ? \OC_User::getDisplayName($res['editor']) : 'Guest user', - 'UserCanWrite' => $res['canwrite'] ? true : false, - 'PostMessageOrigin' => $res['server_host'], - 'LastModifiedTime' => Helper::toISO8601($file->getMtime()) - ] - ); + $response = [ + 'BaseFileName' => $file->getName(), + 'Size' => $file->getSize(), + 'Version' => $version, + 'UserId' => $res['editor'] !== '' ? $res['editor'] : 'Guest user', + 'OwnerId' => $res['owner'], + 'UserFriendlyName' => $res['editor'] !== '' ? \OC_User::getDisplayName($res['editor']) : 'Guest user', + 'UserExtraInfo' => [ + ], + 'UserCanWrite' => $res['canwrite'] ? true : false, + 'PostMessageOrigin' => $res['server_host'], + 'LastModifiedTime' => Helper::toISO8601($file->getMtime()) + ]; + + $serverVersion = $this->config->getSystemValue('version'); + if (version_compare($serverVersion, '13', '>=')) { + $user = $this->userManager->get($res['editor']); + if($user !== null) { + if($user->getAvatarImage(32) !== null) { + $response['UserExtraInfo']['avatar'] = $this->urlGenerator->linkToRouteAbsolute('core.avatar.getAvatar', ['userId' => $res['editor'], 'size' => 32]); + } + } + } + + return new JSONResponse($response); } /**