diff options
Diffstat (limited to 'bootstrap/comments/backend/classes/avatars.php')
-rw-r--r-- | bootstrap/comments/backend/classes/avatars.php | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/bootstrap/comments/backend/classes/avatars.php b/bootstrap/comments/backend/classes/avatars.php new file mode 100644 index 0000000..89fc96b --- /dev/null +++ b/bootstrap/comments/backend/classes/avatars.php @@ -0,0 +1,90 @@ +<?php namespace HashOver; + +// Copyright (C) 2015-2018 Jacob Barkdull +// This file is part of HashOver. +// +// HashOver is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// HashOver is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with HashOver. If not, see <http://www.gnu.org/licenses/>. + + +class Avatars +{ + public $setup; + public $isHTTPS = false; + public $http; + public $subdomain; + public $iconSize; + public $avatar; + public $fallback; + + public function __construct (Setup $setup) + { + $this->setup = $setup; + $this->isHTTPS = $setup->isHTTPS (); + + // Get icon size from settings + $this->iconSize = ($setup->isMobile === true) ? 256 : $setup->iconSize; + + // Default avatar + $avatar = $setup->httpImages . '/avatar'; + $extension = ($setup->isMobile === true) ? 'svg' : 'png'; + $this->avatar = $avatar . '.' . $extension; + + // Use HTTPS if this file is requested with HTTPS + $this->http = ($this->isHTTPS ? 'https' : 'http') . '://'; + $this->subdomain = $this->isHTTPS ? 'secure' : 'www'; + + // If set to custom, direct 404s to local avatar image + if ($setup->gravatarDefault === 'custom') { + $fallback = $avatar . '.png'; + + // Check if HashOver is being remotely accessed + if ($setup->remoteAccess === false) { + // If so, make avatar path absolute + $fallback = $setup->absolutePath . $fallback; + } + + // URL encode fallback URL + $this->fallback = urlencode ($fallback); + } else { + // If not direct to a themed default + $this->fallback = $setup->gravatarDefault; + } + + // Gravatar URL + $this->gravatar = $this->http . $this->subdomain; + $this->gravatar .= '.gravatar.com/avatar/'; + } + + // Attempt to get Gravatar avatar image + public function getGravatar ($hash) + { + // If no hash is given, return the default avatar + if (empty ($hash)) { + return $this->avatar; + } + + // Gravatar URL + $gravatar = $this->gravatar . $hash . '.png?r=pg'; + $gravatar .= '&s=' . $this->iconSize; + $gravatar .= '&d=' . $this->fallback; + + // Force Gravatar default avatar if enabled + if ($this->setup->gravatarForce === true) { + $gravatar .= '&f=y'; + } + + // Redirect Gravatar image + return $gravatar; + } +} |