public static function update_picture(stdClass $usernew, $filemanageroptions = array()) {
        global $CFG, $DB;
        require_once("$CFG->libdir/gdlib.php");

        $context = context_user::instance($usernew->id, MUST_EXIST);
        $user = core_user::get_user($usernew->id, 'id, picture', MUST_EXIST);

        $newpicture = $user->picture;
        // Get file_storage to process files.
        $fs = get_file_storage();
        if (!empty($usernew->deletepicture)) {
            // The user has chosen to delete the selected users picture.
            $fs->delete_area_files($context->id, 'user', 'icon'); // Drop all images in area.
            $newpicture = 0;

        } else {
            // Save newly uploaded file, this will avoid context mismatch for newly created users.
            file_save_draft_area_files($usernew->imagefile, $context->id, 'user', 'newicon', 0, $filemanageroptions);
            if (($iconfiles = $fs->get_area_files($context->id, 'user', 'newicon')) && count($iconfiles) == 2) {
                // Get file which was uploaded in draft area.
                foreach ($iconfiles as $file) {
                    if (!$file->is_directory()) {
                        break;
                    }
                }
                // Copy file to temporary location and the send it for processing icon.
                if ($iconfile = $file->copy_content_to_temp()) {
                    // There is a new image that has been uploaded.
                    // Process the new image and set the user to make use of it.
                    // NOTE: Uploaded images always take over Gravatar.
                    $newpicture = (int)process_new_icon($context, 'user', 'icon', 0, $iconfile);
                    // Delete temporary file.
                    @unlink($iconfile);
                    // Remove uploaded file.
                    $fs->delete_area_files($context->id, 'user', 'newicon');
                } else {
                    // Something went wrong while creating temp file.
                    // Remove uploaded file.
                    $fs->delete_area_files($context->id, 'user', 'newicon');
                    return false;
                }
            }
        }

        if ($newpicture != $user->picture) {
            $DB->set_field('user', 'picture', $newpicture, array('id' => $user->id));
            return true;
        } else {
            return false;
        }
    }