<?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); } if ($_FILES['avatar']['error'] != 0) { register_error(elgg_echo('avatar:upload:fail')); 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)); add_to_river($view, 'update', $owner->guid, $owner->guid); } forward(REFERER);