123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- /**
- * Avatar upload action
- */
- $guid = get_input('guid');
- $owner = get_entity($guid);
- if (!$owner || !($owner instanceof ElggUser) || !$owner->canEdit()) {
- register_error(elgg_echo('avatar:upload:fail'));
- forward(REFERER);
- }
- $error = elgg_get_friendly_upload_error($_FILES['avatar']['error']);
- if ($error) {
- register_error($error);
- forward(REFERER);
- }
- $icon_sizes = elgg_get_config('icon_sizes');
- // get the images and save their file handlers into an array
- // so we can do clean up if one fails.
- $files = array();
- foreach ($icon_sizes as $name => $size_info) {
- $resized = get_resized_image_from_uploaded_file('avatar', $size_info['w'], $size_info['h'], $size_info['square'], $size_info['upscale']);
- if ($resized) {
- //@todo Make these actual entities. See exts #348.
- $file = new ElggFile();
- $file->owner_guid = $guid;
- $file->setFilename("profile/{$guid}{$name}.jpg");
- $file->open('write');
- $file->write($resized);
- $file->close();
- $files[] = $file;
- } else {
- // cleanup on fail
- foreach ($files as $file) {
- $file->delete();
- }
- register_error(elgg_echo('avatar:resize:fail'));
- forward(REFERER);
- }
- }
- // reset crop coordinates
- $owner->x1 = 0;
- $owner->x2 = 0;
- $owner->y1 = 0;
- $owner->y2 = 0;
- $owner->icontime = time();
- if (elgg_trigger_event('profileiconupdate', $owner->type, $owner)) {
- system_message(elgg_echo("avatar:upload:success"));
- $view = 'river/user/default/profileiconupdate';
- elgg_delete_river(array('subject_guid' => $owner->guid, 'view' => $view));
- elgg_create_river_item(array(
- 'view' => $view,
- 'action_type' => 'update',
- 'subject_guid' => $owner->guid,
- 'object_guid' => $owner->guid,
- ));
- }
- forward(REFERER);
|