aboutsummaryrefslogtreecommitdiff
path: root/pages/avatar/view.php
diff options
context:
space:
mode:
Diffstat (limited to 'pages/avatar/view.php')
-rw-r--r--pages/avatar/view.php46
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;