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()); } }