/** * Takes a user object, and writes out an anchor of the user's icon to the user's profile. * * @param object|array $User A user object or array. * @param array $Options */ function userPhoto($User, $Options = array()) { if (is_string($Options)) { $Options = array('LinkClass' => $Options); } if ($Px = val('Px', $Options)) { $User = userBuilder($User, $Px); } else { $User = (object) $User; } $LinkClass = concatSep(' ', val('LinkClass', $Options, ''), 'PhotoWrap'); $ImgClass = val('ImageClass', $Options, 'ProfilePhoto'); $Size = val('Size', $Options); if ($Size) { $LinkClass .= " PhotoWrap{$Size}"; $ImgClass .= " {$ImgClass}{$Size}"; } else { $ImgClass .= " {$ImgClass}Medium"; // backwards compat } $FullUser = Gdn::userModel()->getID(val('UserID', $User), DATASET_TYPE_ARRAY); $UserCssClass = val('_CssClass', $FullUser); if ($UserCssClass) { $LinkClass .= ' ' . $UserCssClass; } $LinkClass = $LinkClass == '' ? '' : ' class="' . $LinkClass . '"'; $Photo = val('Photo', $User, val('PhotoUrl', $User)); $Name = val('Name', $User); $Title = htmlspecialchars(val('Title', $Options, $Name)); if ($FullUser && $FullUser['Banned']) { $Photo = c('Garden.BannedPhoto', 'http://cdn.vanillaforums.com/images/banned_large.png'); $Title .= ' (' . t('Banned') . ')'; } if (!$Photo && function_exists('UserPhotoDefaultUrl')) { $Photo = userPhotoDefaultUrl($User, $ImgClass); } if ($Photo) { if (!isUrl($Photo)) { $PhotoUrl = Gdn_Upload::url(changeBasename($Photo, 'n%s')); } else { $PhotoUrl = $Photo; } $Href = url(userUrl($User)); return '<a title="' . $Title . '" href="' . $Href . '"' . $LinkClass . '>' . img($PhotoUrl, array('alt' => $Name, 'class' => $ImgClass)) . '</a>'; } else { return ''; } }
/** * Returns the url to the default avatar for a user. * * @param array $user The user to get the default avatar for. * @param string $size The size of avatar to return (only respected for dashboard-uploaded default avatars). * @return string The url to the default avatar image. */ public static function getDefaultAvatarUrl($user = [], $size = 'thumbnail') { if (!empty($user) && function_exists('UserPhotoDefaultUrl')) { return userPhotoDefaultUrl($user); } if ($avatar = c('Garden.DefaultAvatar', false)) { if (strpos($avatar, 'defaultavatar/') !== false) { if ($size == 'thumbnail') { return Gdn_UploadImage::url(changeBasename($avatar, 'n%s')); } elseif ($size == 'profile') { return Gdn_UploadImage::url(changeBasename($avatar, 'p%s')); } } return $avatar; } return asset('applications/dashboard/design/images/defaulticon.png', true); }
/** * Set the vanillicon on the user' profile. * * @param ProfileController $Sender * @param array $Args */ public function profileController_afterAddSideMenu_handler($Sender, $Args) { if (!$Sender->User->Photo) { $Sender->User->Photo = userPhotoDefaultUrl($Sender->User, array('Size' => 200)); } }