diff options
Diffstat (limited to 'pages/avatar')
-rw-r--r-- | pages/avatar/edit.php | 32 | ||||
-rw-r--r-- | pages/avatar/view.php | 54 |
2 files changed, 86 insertions, 0 deletions
diff --git a/pages/avatar/edit.php b/pages/avatar/edit.php new file mode 100644 index 000000000..56aede887 --- /dev/null +++ b/pages/avatar/edit.php @@ -0,0 +1,32 @@ +<?php +/** + * Upload and crop an avatar page + */ + +// Only logged in users +gatekeeper(); + +elgg_set_context('profile_edit'); + +$title = elgg_echo('avatar:edit'); + +$entity = elgg_get_page_owner_entity(); +if (!elgg_instanceof($entity, 'user') || !$entity->canEdit()) { + register_error(elgg_echo('avatar:noaccess')); + forward(REFERER); +} + +$content = elgg_view('core/avatar/upload', array('entity' => $entity)); + +// only offer the crop view if an avatar has been uploaded +if (isset($entity->icontime)) { + $content .= elgg_view('core/avatar/crop', array('entity' => $entity)); +} + +$params = array( + 'content' => $content, + 'title' => $title, +); +$body = elgg_view_layout('one_sidebar', $params); + +echo elgg_view_page($title, $body); diff --git a/pages/avatar/view.php b/pages/avatar/view.php new file mode 100644 index 000000000..10d81fef1 --- /dev/null +++ b/pages/avatar/view.php @@ -0,0 +1,54 @@ +<?php +/** + * View an avatar + */ + +// page owner library sets this based on URL +$user = elgg_get_page_owner_entity(); + +// 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) { + $url = "_graphics/icons/default/{$size}.png"; + $url = elgg_normalize_url($url); + forward($url); +} + +$user_guid = $user->getGUID(); + +// Try and get the icon +$filehandler = new ElggFile(); +$filehandler->owner_guid = $user_guid; +$filehandler->setFilename("profile/{$user_guid}{$size}.jpg"); + +$success = false; + +try { + if ($filehandler->open("read")) { + if ($contents = $filehandler->read($filehandler->size())) { + $success = true; + } + } +} catch (InvalidParameterException $e) { + elgg_log("Unable to get avatar for user with GUID $user_guid", 'ERROR'); +} + + +if (!$success) { + $url = "_graphics/icons/default/{$size}.png"; + $url = elgg_normalize_url($url); + forward($url); +} + +header("Content-type: image/jpeg", true); +header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+6 months")), true); +header("Pragma: public", true); +header("Cache-Control: public", true); +header("Content-Length: " . strlen($contents)); + +echo $contents; |