private function upload_avatar($form, $member_extended_field)
 {
     $avatar = $form->get_value('upload_avatar');
     $user_accounts_config = UserAccountsConfig::load();
     $authorized_pictures_extensions = FileUploadConfig::load()->get_authorized_picture_extensions();
     if (empty($authorized_pictures_extensions)) {
         return new MemberExtendedFieldErrorsMessageException(LangLoader::get_message('e_upload_invalid_format', 'errors'));
     }
     if ($form->get_value('link_avatar')) {
         if (preg_match('`([A-Za-z0-9()_-])+\\.(' . implode('|', array_map('preg_quote', $authorized_pictures_extensions)) . ')+$`i', $form->get_value('link_avatar'))) {
             $image = new Image($form->get_value('link_avatar'));
             if ($image->get_width() > $user_accounts_config->get_max_avatar_width() || $image->get_height() > $user_accounts_config->get_max_avatar_height()) {
                 if ($user_accounts_config->is_avatar_auto_resizing_enabled()) {
                     $directory = '/images/avatars/' . Url::encode_rewrite($image->get_name() . '_' . $this->key_hash()) . '.' . $image->get_extension();
                     $resizer = new ImageResizer();
                     $resizer->resize_with_max_values($image, $user_accounts_config->get_max_avatar_width(), $user_accounts_config->get_max_avatar_height(), PATH_TO_ROOT . $directory);
                     $this->delete_old_avatar($member_extended_field);
                     return $directory;
                 }
                 throw new MemberExtendedFieldErrorsMessageException(LangLoader::get_message('e_upload_max_dimension', 'errors'));
             }
             $this->delete_old_avatar($member_extended_field);
             return $form->get_value('link_avatar');
         } else {
             throw new MemberExtendedFieldErrorsMessageException(LangLoader::get_message('e_upload_invalid_format', 'errors'));
         }
     } elseif (!empty($avatar)) {
         if (UserAccountsConfig::load()->is_avatar_upload_enabled()) {
             $dir = '/images/avatars/';
             if ($user_accounts_config->is_avatar_auto_resizing_enabled()) {
                 $image = new Image($avatar->get_temporary_filename());
                 $resizer = new ImageResizer();
                 $explode = explode('.', $avatar->get_name());
                 $extension = array_pop($explode);
                 if (!in_array($extension, $authorized_pictures_extensions)) {
                     return new MemberExtendedFieldErrorsMessageException(LangLoader::get_message('e_upload_invalid_format', 'errors'));
                 }
                 $explode = explode('.', $avatar->get_name());
                 $name = $explode[0];
                 $directory = $dir . Url::encode_rewrite($name . '_' . $this->key_hash()) . '.' . $extension;
                 try {
                     $resizer->resize_with_max_values($image, $user_accounts_config->get_max_avatar_width(), $user_accounts_config->get_max_avatar_height(), PATH_TO_ROOT . $directory);
                     $this->delete_old_avatar($member_extended_field);
                     return $directory;
                 } catch (UnsupportedOperationException $e) {
                     throw new MemberExtendedFieldErrorsMessageException(LangLoader::get_message('e_upload_invalid_format', 'errors'));
                 }
             } else {
                 $Upload = new Upload(PATH_TO_ROOT . $dir);
                 $Upload->file($form->get_html_id() . '_upload_avatar', '`([A-Za-z0-9()_-])+\\.(' . implode('|', array_map('preg_quote', $authorized_pictures_extensions)) . ')+$`i', Upload::UNIQ_NAME, $user_accounts_config->get_max_avatar_weight() * 1024);
                 $upload_error = $Upload->get_error();
                 if (!empty($upload_error)) {
                     throw new MemberExtendedFieldErrorsMessageException(LangLoader::get_message($upload_error, 'errors'));
                 }
                 $error = $Upload->check_img($user_accounts_config->get_max_avatar_width(), $user_accounts_config->get_max_avatar_height(), Upload::DELETE_ON_ERROR);
                 if (!empty($error)) {
                     throw new MemberExtendedFieldErrorsMessageException(LangLoader::get_message($error, 'errors'));
                 } else {
                     $this->delete_old_avatar($member_extended_field);
                     return $dir . $Upload->get_filename();
                 }
             }
         }
     } else {
         return MemberExtendedFieldsService::return_field_member($member_extended_field->get_field_name(), $member_extended_field->get_user_id());
     }
 }