avatar
All checks were successful
Deploy / deploy (push) Successful in 1m7s

This commit is contained in:
2026-07-28 02:03:01 +02:00
parent 0ac69fdfd5
commit aa86001760
18 changed files with 827 additions and 385 deletions

View File

@@ -3,6 +3,7 @@ declare(strict_types=1);
namespace App;
use App\Avatar\AvatarManager;
use App\Avatar\Lorelei;
final class ProfileSettings
@@ -31,6 +32,9 @@ final class ProfileSettings
}
$avatarColumns = [
'avatar_style' => "ALTER TABLE user_profiles ADD COLUMN avatar_style VARCHAR(40) NOT NULL DEFAULT 'lorelei' AFTER location_tracking_preference",
'avatar_seed' => "ALTER TABLE user_profiles ADD COLUMN avatar_seed VARCHAR(100) NOT NULL DEFAULT '' AFTER avatar_style",
'avatar_config_json' => "ALTER TABLE user_profiles ADD COLUMN avatar_config_json TEXT NULL AFTER avatar_seed",
'avatar_preset' => "ALTER TABLE user_profiles ADD COLUMN avatar_preset VARCHAR(64) NOT NULL DEFAULT 'papa-kind-treff' AFTER location_tracking_preference",
'avatar_lorelei_eyes_variant' => "ALTER TABLE user_profiles ADD COLUMN avatar_lorelei_eyes_variant VARCHAR(24) NOT NULL DEFAULT '' AFTER avatar_preset",
'avatar_lorelei_eyebrows_variant' => "ALTER TABLE user_profiles ADD COLUMN avatar_lorelei_eyebrows_variant VARCHAR(24) NOT NULL DEFAULT '' AFTER avatar_lorelei_eyes_variant",
@@ -85,10 +89,16 @@ final class ProfileSettings
}
$this->ensureSchema();
$avatar = Lorelei::normalize($avatarConfig);
$avatar = AvatarManager::normalizeSubmission($avatarConfig, $userId);
$legacy = $avatar['avatar_style'] === Lorelei::key()
? Lorelei::legacyColumnsFromConfig($avatar['avatar_seed'], $avatar['avatar_config_array'])
: Lorelei::legacyColumnsFromConfig($avatar['avatar_seed'], Lorelei::defaultConfig());
$stmt = $this->pdo->prepare(
'UPDATE user_profiles
SET avatar_preset = :preset,
SET avatar_style = :avatarStyle,
avatar_seed = :avatarSeed,
avatar_config_json = :avatarConfigJson,
avatar_preset = :preset,
avatar_lorelei_eyes_variant = :eyesVariant,
avatar_lorelei_eyebrows_variant = :eyebrowsVariant,
avatar_lorelei_mouth_variant = :mouthVariant,
@@ -100,14 +110,17 @@ final class ProfileSettings
WHERE user_id = :id'
);
$stmt->execute([
'preset' => $avatar['avatar_preset'],
'eyesVariant' => $avatar['avatar_lorelei_eyes_variant'],
'eyebrowsVariant' => $avatar['avatar_lorelei_eyebrows_variant'],
'mouthVariant' => $avatar['avatar_lorelei_mouth_variant'],
'glassesVariant' => $avatar['avatar_lorelei_glasses_variant'],
'hairVariant' => $avatar['avatar_lorelei_hair_variant'],
'beardVariant' => $avatar['avatar_lorelei_beard_variant'],
'earringsVariant' => $avatar['avatar_lorelei_earrings_variant'],
'avatarStyle' => $avatar['avatar_style'],
'avatarSeed' => $avatar['avatar_seed'],
'avatarConfigJson' => $avatar['avatar_config_json'],
'preset' => $legacy['avatar_preset'],
'eyesVariant' => $legacy['avatar_lorelei_eyes_variant'],
'eyebrowsVariant' => $legacy['avatar_lorelei_eyebrows_variant'],
'mouthVariant' => $legacy['avatar_lorelei_mouth_variant'],
'glassesVariant' => $legacy['avatar_lorelei_glasses_variant'],
'hairVariant' => $legacy['avatar_lorelei_hair_variant'],
'beardVariant' => $legacy['avatar_lorelei_beard_variant'],
'earringsVariant' => $legacy['avatar_lorelei_earrings_variant'],
'id' => $userId,
]);
}