diff options
Diffstat (limited to 'pages/avatar/view.php')
-rw-r--r-- | pages/avatar/view.php | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/pages/avatar/view.php b/pages/avatar/view.php new file mode 100644 index 000000000..ed8a47d59 --- /dev/null +++ b/pages/avatar/view.php @@ -0,0 +1,46 @@ +<?php +/** + * View an avatar + */ + +$user = elgg_get_page_owner(); + +// Get the size +$size = strtolower(get_input('size')); +if (!in_array($size, array('master', 'large', 'medium', 'small', 'tiny', 'topbar'))) { + $size = 'medium'; +} + +// If user doesn't exist, return default icon +if (!$user) { + $path = elgg_view("icon/user/default/$size"); + header("Location: $path"); + exit; +} + +// Try and get the icon +$filehandler = new ElggFile(); +$filehandler->owner_guid = $user->getGUID(); +$filehandler->setFilename("profile/" . $user->getGUID() . $size . ".jpg"); + +$success = false; +if ($filehandler->open("read")) { + if ($contents = $filehandler->read($filehandler->size())) { + $success = true; + } +} + +if (!$success) { + global $CONFIG; + $path = elgg_view('icon/user/default/'.$size); + header("Location: {$path}"); + exit; +} + +header("Content-type: image/jpeg"); +header('Expires: ' . date('r', time() + 864000)); +header("Pragma: public"); +header("Cache-Control: public"); +header("Content-Length: " . strlen($contents)); + +echo $contents; |