From 729dffed5ec924492962a41b4697ca05ad40da79 Mon Sep 17 00:00:00 2001
From: kondou <kondou@ts.unde.re>
Date: Sat, 15 Mar 2014 15:27:48 +0100
Subject: [PATCH] Load avatar in header via PHP

* fix #7484
* use UID, css, and div instead of span
---
 core/css/header.css            |  2 ++
 core/js/avatar.js              | 10 ----------
 core/templates/layout.user.php | 10 +++++++---
 lib/private/helper.php         | 15 +++++++++++++++
 lib/private/templatelayout.php |  3 ++-
 5 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/core/css/header.css b/core/css/header.css
index f83ef451ce..33eb7e25cc 100644
--- a/core/css/header.css
+++ b/core/css/header.css
@@ -239,6 +239,8 @@
 	display: inline-block;
 	margin-right: 5px;
 	cursor: pointer;
+	height: 32px;
+	width: 32px;
 }
 #header .avatardiv img {
 	opacity: 1;
diff --git a/core/js/avatar.js b/core/js/avatar.js
index 6835f6ef0a..8ff136d67c 100644
--- a/core/js/avatar.js
+++ b/core/js/avatar.js
@@ -1,15 +1,5 @@
 $(document).ready(function(){
 	if (OC.currentUser) {
-		var callback = function() {
-			// do not show display name on mobile when profile picture is present
-			if($('#header .avatardiv').children().length > 0) {
-				$('#header .avatardiv').addClass('avatardiv-shown');
-			}
-		};
-
-		$('#header .avatardiv').avatar(
-			OC.currentUser, 32, undefined, true, callback
-		);
 		// Personal settings
 		$('#avatar .avatardiv').avatar(OC.currentUser, 128);
 	}
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 9445175efc..09630435b7 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -65,13 +65,17 @@
 			</a>
 			<div id="logo-claim" style="display:none;"><?php p($theme->getLogoClaim()); ?></div>
 			<div id="settings" class="svg">
-				<span id="expand" tabindex="0" role="link">
+				<div id="expand" tabindex="0" role="link">
 					<?php if ($_['enableAvatars']): ?>
-					<div class="avatardiv"></div>
+					<div class="avatardiv"<?php if (!$_['userAvatarSet']) { print_unescaped(' style="display: none"'); } ?>>
+						<?php if ($_['userAvatarSet']): ?>
+							<img src="<?php p(link_to('', 'index.php').'/avatar/'.$_['user_uid'].'/32?requesttoken='.$_['requesttoken']); ?>">
+						<?php endif; ?>
+					</div>
 					<?php endif; ?>
 					<span id="expandDisplayName"><?php  p(trim($_['user_displayname']) != '' ? $_['user_displayname'] : $_['user_uid']) ?></span>
 					<img class="svg" alt="" src="<?php print_unescaped(image_path('', 'actions/caret.svg')); ?>" />
-				</span>
+				</div>
 				<div id="expanddiv">
 				<ul>
 				<?php foreach($_['settingsnavigation'] as $entry):?>
diff --git a/lib/private/helper.php b/lib/private/helper.php
index 823e82ceeb..628af14fa0 100644
--- a/lib/private/helper.php
+++ b/lib/private/helper.php
@@ -279,6 +279,21 @@ class OC_Helper {
 		return self::linkToRoute( 'core_ajax_public_preview', array('x' => 36, 'y' => 36, 'file' => $path, 't' => $token));
 	}
 
+	/**
+	 * shows whether the user has an avatar
+	 * @param string $user username
+	 * @return bool avatar set or not
+	**/
+	public static function userAvatarSet($user) {
+		$avatar = new \OC_Avatar($user);
+		$image = $avatar->get(1);
+		if ($image instanceof \OC_Image) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
 	/**
 	 * Make a human file size
 	 * @param int $bytes file size in bytes
diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php
index f5f079c8b2..cbaadd5768 100644
--- a/lib/private/templatelayout.php
+++ b/lib/private/templatelayout.php
@@ -76,6 +76,7 @@ class OC_TemplateLayout extends OC_Template {
 			$this->assign( 'user_uid', OC_User::getUser() );
 			$this->assign( 'appsmanagement_active', strpos(OC_Request::requestUri(), OC_Helper::linkToRoute('settings_apps')) === 0 );
 			$this->assign('enableAvatars', $this->config->getSystemValue('enable_avatars', true));
+			$this->assign('userAvatarSet', \OC_Helper::userAvatarSet(OC_User::getUser()));
 		} else if ($renderAs == 'error') {
 			parent::__construct('core', 'layout.guest', '', false);
 			$this->assign('bodyid', 'body-login');
@@ -89,7 +90,7 @@ class OC_TemplateLayout extends OC_Template {
 		if(empty(self::$versionHash)) {
 			self::$versionHash = md5(implode(',', OC_App::getAppVersions()));
 		}
-		
+
 		$useAssetPipeline = self::isAssetPipelineEnabled();
 		if ($useAssetPipeline) {
 			$this->append( 'jsfiles', OC_Helper::linkToRoute('js_config', array('v' => self::$versionHash)));
-- 
GitLab