From bcaf96ed598ab3dca67f95f9261e7632ab4c068d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 10 Dec 2023 21:25:40 +0100 Subject: [PATCH] Use a svg file as default user avatar instead of SVG. Also changed path generation logic This should also fix the path issue described in issue #446 --- public/img/default_avatar.png | Bin 18624 -> 0 bytes public/img/default_avatar.svg | 1 + src/Services/UserSystem/UserAvatarHelper.php | 39 +++++++++---------- 3 files changed, 19 insertions(+), 21 deletions(-) delete mode 100644 public/img/default_avatar.png create mode 100644 public/img/default_avatar.svg diff --git a/public/img/default_avatar.png b/public/img/default_avatar.png deleted file mode 100644 index 17d6a1069f5833aa50501f26b9c3514fa765c96d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18624 zcmb4qWmr{B^sj(~gdoxgh=>SCcgsQPl5P&&A>AD!jePqSU1g#CT^S?Z5qV*j(JpON3=$mc!z@bIgh zYW(nTY8!n2g1@>0*KUp@A2PQ_^>!T3rq=K4I{yOViY9l_GT?tdB$Njapz!~XUnHzx z^1nC!AAX@>gUSEq{ojB6W90#2-v7g|{}an@iD_kScD(ZfO#|@?KTdYXqyH8lgBKR< zyL3*?*7pU(4$orT-G5t?a%+eD=nE7d@f+H}V{fi?p^QGmHk9nL{X$_ zd-0r--C_?FFt%t`&%`qwrKm$RBS>OXZgcA8`%VXggsE+)S5*0aF?lJ*hlh0S544)#Oi{QWo z+UhDfeg@C+aK0-{qz5Qy2UW{k1G||u>>o(etoL<%-&IXK`P@zH>&wcL+wfG=TezC7 zB2H6k-`K^)_55>ujL*(^|DJ<~nW>3(^IlXLnO9vNamKey;;e5f4knGGE;Dh5Mh~z_ z;8;0<;UNXFsqKHMYA{vt~bwSyS}tvuW4D+S5$o$$hPVUKR^2%EYvG3g6SRJ zba3lg$WMa%e<|4`bL@ z|64cDv#r8aNe7Pjes8!wR_L2!Bc0={6}MWk%oB2jyYs@$6upM|*61p#-mug0U$CNT zO?IO_VW4cqWc&hofe~lfYAepO&cI74N1MaB{zD>jPrb}I=4-xr9S@sMX*+4V-RRI` z-K>wD5vLueXP#2wNUTu5tqWU)Nof}rjaLL8P)7z_*Y@74M|0`APVaVV9hI3DRTuHV zs!PH%WDK&~4IB)CN;2>-_x$&{&m{OIj8LM9=U?(v?2~`x$liJ1DU?k`<)L5Onie}d znmveW@jDE$1jq55{f+eGw6Nz;zpE;f;DsAoQwm?w=HBHW2a%o5PLqzq)!n7ea4n|s z;NjKb_aoUOsKx|HKu1(&jXf*O+R8=a^Ex&Y?q6iT)$gQHam*<&?=akx$J=f?R6f@J z26GMyA^|SIOHr_|nmU9!#)1A~K~KTlEb46SZ+)&*cyFqkRqg>?X9RWBqyeg$w`&)M z1_W9BbQ+Rdxl~!UP{T`bdu+g7R_@F@)@G{k{pq*cK5I)Ep;{*?X9H(<=U7q;5So7P z2bxZ`lyhuaG%i*hJOuRT-&*1>-|jg7?c2S%=v_U_Q2SI2VbVRI?4X3gb&&J+i+JWu zwM#IIMpN0;P023yzRSsdQD#03OXgwG>wwFJ$7J9@E-_H%Rno zFA*B*T2`)%n%GUIe>LSq21e!~>{k<@6L?fl=)T}l*3(mh_sv>ks?^rsHpmv8JOL2` zmkuQ^?K;ocord9);n_;$k-A0I;@m}27IPSLkK6tGtMqRnOqRb`QaRPrQ-!zw*So@%&ZTcMb((c1MVKfc87%#-7OA+bc?h2FP<$lhNf;^E2Fgn~4cxan*ut`btd4 zO6uKXHqC)ZI%`b@)mOGJGL6j3^qMUN)GvG>=-A6Gz*sdw_BT2U$@fCC@T6KBs2@>ejU z3zBJD%Ax3#)Xe-v1^`-M62-b@CebJ+__i1H-#1}yg zA^2*`NjEYGmN#?fI?Yc!s)9x`a2an5H+85Q8IVBG(VVM>_1T@Te)Xx8BZ^b)4VY)^`1)z7qp( z6}r?b?HW$QDpVskgkPjfiap2I?H>YrFR z4!OQ4EJ!h91J2?Xo$O^x8FA-j_LxO9Jqx(^$lJOAgjVbs&M7Jqd}abnVWkpR;lgx} z=DYW&jKY}X0jnwH>*Bt~%`+Tl;ld@)8LPey*>Amiga$-zGp|w%ZFnrA`SSd|Sv)#= zIx}}E2Vx=I)h45lyOf)c6{x1i!v@z$N}WsueJm1bun-z~RKIlmM>?e2%&F?>P}pcy zC1co2#9Kym>0=HK2Zt}x{28c=t<0SRKO+qEc;rb$KD4q_W|gC$>)kK$gpR~TO%$-a z{pzvfdXfGPv8w5dtIHjrG3N-&D$=Ppe{UB zO%o$lRHe%dznp8VdZOGGZH5P)Eu5TpSZ)7a&;@ME^h4_}`QPIMHy*XSDtz-&VI4;$ z{G|qyJ~O&h01`@whnz26j->C0zPLql<(DA5#B_;7s0s(d$dAX2EBOz>Bbr-^aD5Waac)Nv)`DWB61!DSf_gXL zo*^C?t~#ka5&HWB%Sc@~SGO%*$1y`P2#zk&D6bc@E*v@v-qGH^ul&MsW17H07UPry z2;QXKMYXd;C+h1ZQ(w`XZxmW_kR>zXWg~N!Zyn}R}o8iqz!^)@-DhZvF z7~1J)URCcB%GQ{)>AfW?yGNaEFZaS{*IImqWw$hBrOQCFzV8<~m-vB| z{8gX2I^OU*_+f~IhTW7c^i#8mVDA51fW`!(C#kFDqpXryRF&%VJKa^Zdmoa2uO&F?pe zER_BYX~YNL-GFG?LT0KLF|XfJp7UOU`9cW6wZ=08j6 zlLYdzU|;C?uE@oqki?iJ_(ul!Ile&wA_%`le_*#;`XEBE0=wwAfXiIK-3^FKf_uQ#~_E5_qSeV z@+gTpgMdwSZTpBu4MQXn_m8B!HvulsKq?{Bz))>|%qU7h1oS#32amiJcMy_6B|0*s z7;p7ZLrE+K@g8`-f!#jV^W4nr=>^MC9MX(FmlKztKz{^)O4z0^U;`5IRQeGmu>K@H^F2z>LECH^8dOoaVe$n3@7 zZUp))4%n(Q9M+W|K_zo{ z#Hks5;t>;tkgoddd8C$SO!1l~ru-Fi5v)8-dDfdjU1ahAsj(r8{y zB1e|Okw`Qp;Sgf$AT&e5 zniqi3L?GEk_J&wkgB`rkDGLOALpw-;9sF&ix43O>TpkHUT#sjQ zS4T9k_RBgMaNH22(7)d#{@gIru{~!YKk%U+pI?2x&ITBsXIrd-772c)UipBMFfCU0 z7{~@act}BAK|??jK;xTdq=IIBqyy|>o7*YeBxhy%&~^pa+3^K6&@d^=<0Ssr7J+qSl2St=e{usjs9af5Bk`1hS;Z(w?CnTU#D!xSFxe0h%P|wMgPY`icL_KK7;OAR2u9G{pgIMM}@B2*`61Yf_VQMMcTtX~h_%t^_-zOvB@ zyu<|0Sl!zF$dNmiH=VIb+~@q#WlOABjS$gkhONvTe+Urnm&UdT^2WM=uk^Mm>qkKlc>--WBX)wZRE@*(VV@LYqnX$$9TkzZx%s^F4wA;T z_`B!K{Ynu~NSnd*62^1qulVqj7#-vTg~)-YRTkpWkk0Llg_8Kv)4(p#wKjp}9mv*fflX8%^G9ayRnEgl3zvTha$21WIFHEOXNy zwA6o#Cow-3f4Ir*ytEhwrVCaP@*1DE^~}&}$Ut zI2ODx`5!Za+8Ew25kqE^&jb(}g>F(E{Ex;NrvC~&rhPZh2KCHf zw%IY?I6EK!^3E5x4U0#qA6smd##A$u=FI0z1tJpRj2|B$GUR7x{}_=iPazv?qRY{t zQaKs1)j1jWUWucF*$)v;en3{rpxM+UPtAFh2zJH6!FELG*%3n=U!okTJ#sSmW`sD- zQoU?hax-c!D@`*YB6Byn({#Qr&;?r=pnVJ3c)Ox$7|8!-B_6YAJq!m&i=h;}B0>Nu zEM^8~GlUzlB#><)ly{MVR|o3w&HiUC6z=au7QT;UWFsRsU%`LLTwFs!@58ydY+wQ% zF&ISY3miJ_d*-asbxWv0u3fw4|9apJSn(Tw(Op;a$}3>9TP(P^!|^k@*MMn}F#}!i z+6W|?bMga_y;TtI(^SxQ^&N1AdTXc(eV-2p?&_r+nw_9AYCw&f7moP`*v*U+HDZ+$ z9fd|+9hyB{ixr5bzz9~U<}do@c+v)e={*>q8hZwcVAhL1zhtzC#ftasHM-a&wPSu` z<&pnL=sRmHU1UEwt`B?YPg$$EpzxCUBPJq=a{QOIU0`r_R);y{(p#?N87qn<0z_Vl zPLBOm$K9A>KuS{Uc;{})mn9a%soge$2^NA;NFaj20Mt`xUdPVTVqZ}~iu8ARhM}t3 zJe!S*4rou9EGjlI5zH`ZJBxMEV!@RpUXQmRBTO=(wGr~xn7Q&j1(8E6(u~+gAFdfZ zRt>Ntka*Q&7m>I!w*F)1AhpX91q&n^lwLT7swYw+2g241EGYVvY*;QlZyca2aj4M9 z&R$U$M22xL#TKk6?*p$6Aln<7)caE)a@4&m3T`PmNv##q1)2aL72=_RrY6?oyO2nG z0?O4+?TTWtUw&ZeEx+)pQ+(*Js_2VASx;LiOs z2ZGAg_uwX0=!uBda};sgEXEU9ak_@*B!DY49kDn+6p-^{#`RwO|+dfQcWGicZI)mWMxG&OJFEQu8aSoANQjbsKyxEptfS<7z3idN8204d)l8#1j>uX%Py~Orqe>{v zdsl})kgS4!k#$VZVww*)B59()A2iJYDZ=&ir+-9%ef~gjNtBVv~K325NOkXv?N#O?D&&STK7%{o6>22*^xtEr>j3*%uFvP1-v_ zM5v1Q50d%T7PW}qn*rB2v%vj6m-SH=SyihaN&^@q$tWTy6v3CWRr(yvpzcGcJ82EQ zW&zYCcperCJXiB)D1Tt>d%N4>#WCXxBAU03y2kx=U3Umn<@*uiF4siVG4r$nu%7)+ z$Rc@(@>j!5>96{8Ua5xvsC3$iI}{kPVyiqljp&>S{HhNUfIS2sTznj@*(52wajIHX zw~I?&f87kyz~XPEqEhLyKUB6ugjlI%K6S+-#2Y@S;4%RH)sHr(c8HmdPi5S^#gA)3 zz~DVEmbU?%#I3;(DXW5gv4sxH=^qh->saw+ekNNhGh$rv^!=u(S=(OL`e>kE-cz5S zVf1G-nH-bePJwe0z^7BvqGCSr?S_{^Pv|%ITc|i=ro{x65f6kP?S%`nPDlm}t^W~G zNU~Z-*%3zYXq4pe3$@QS$suFl3)=8%##Ao{fl<$E_Y0nzjv7FfSIM(iC>*g=@o!SNJM9Q34Yvm^v(6QT6~Kyk!<#YES2*zWvbgM#{S?5V9QJ^(j@)qO>_6lk-?3hk2dZku*hEi zV=|=?od+%A^7M@qD}U16tBDG5q~Y1a0&Yl)UE@4?WBS5>H6!b4Z_T>5bn0I@p!mq6 z?a({_q1kl2@-&b59I&17LpzQ+GO@Om(yFD4^Z^+*89s$*6(w*P#U&;w zIW?|vtMsFX~cA3TB1-#QZoj&1TZr5LR$gIAMq+ZzY&-ygMqQd=uqZNlxOug zChsv_dN$+ob)f$`$isdNa_^mNGj1{El_ zpa#DvY-6cef#G++_QxalL=JS|{dq(0et8(-h-m)y+wSv|NMmNd1PSVGB;60yCls2K z#xLr8UZwX1%gs5x0(k;0@9>?I=b&X@St{dV%jsfM-B8_J-KMNCh&#pWu#L5r4Tb9U z(manr-0F3wdW(8cQu_(GpcTHTV{tHIXg4fv{^kQ390R9iCqSisy^0b)CzV3t%Ng3+D8MCXHEj#HbKd?``@OG%WT!cMLAJ`?{r4!-D}*n=y-_un+^W%< zTd=z=W(O3VWw?KQUDr^iJlz=}_-pfZ{QS`Fh}_QuOu+lTd#QY{1=gOOY-^yiOl zx!!gu%`B)j9+cS1l5y9I=WY`0W->Kv*9O>XVj*11ZzBAMHd-Wzq?O%SOk9`R>%En8 zSj50a!iO_p4L>Tu8u!7Aqv?nM0mmWRH1~0wVTo+heMrU~)pDf}{Q2=8L9Yv=rbyiy6!ma|3KSh^H_NyGezScD zG^yxnqKSjFe4SkJ-P*r)W9xM))6MppHOl%mGTI;72Z9>l+E@I~_f_nXq4+eHC?+$f z{HYx*z|juNqwPN-9e!+V@rL|$4kP^&df8tusy;ZNf`<*&F9pd&Cd_W!tXzx)6d1g! z!t6W*?)SATaBf4G*~6Q_@euxTWJs(dduc;|WZUgPv$llUwAcRRFWyK$c<5&1Q8FvOnR@c|1+!3Gty({x~l>OajCnWg_%{{Hgu*~sg846 z$bwDMGqWc#5p{)mC9xe(nP^q#R~Mlw@5QCU3FWjtL3gl4H* z!HL2zx^lh?gqx{aRZ42sbiG49(O89tP_bAJ#C>rHVoImau-zWgTU@QOo-#Ex7OW)X z-m8csuQqrv_8D8;wl$P zMe%Tk%aTuL#4j@`)nR)sdjD*qx^OC7Z0L+^_r(~?Sh&iweT_ zXZq1G&GkoG#Acj&h4oqfnM;Q*Oxk3utLN_nrNv}WWZPuV4>7qB1(b7-mFB*a#Orxp z=*G*ld$}f1iXAU~&b=HfUh_|KFFnYj5m*OmTSBfD4&P^se4YH zO2?~P$nTEx2nT!pQ@7YL{wj+Gf_k8wm^_L?Tgf-NC!k!apE8vriAr3*ij<)--IyA# zFTN4s|9(7C5L!@-PBmE?e=x=3Q#M*-J>klv&{Pa$ik=_+Tp(BmOirlo0jE=tUS z^C(x*cAp@foOAL_->W%O)SL&NAE7XJSW5N!50nayj^V(1I*J0jLR2!6WFL@@75?2+6&mppO0pzy-V1M6(UJM^)`LbS{R7MYK} zUh0tIsNW8mksji}Wnptn=;@mC;|#UFqvv%+VYHU`oIs+CwW{t(sXOgXPBg)Uscn;d zvE6FJ-fszSbb8_leqD^|V{ zaWj`SWxBgk<`NuYm~GIu|7fO^QFwTB-0FcjiPtppO{SDHjtq|c?OPlb9QCzqu+!jP z!<5?kV^n8mC+%*wJ9fT&KW()=ERs%08T>v)zfrByJTZ*k+fx*z@#P1O_cWFj-(lm% zR%RsIs;#=1z`VdEhreE_mS4B4jNR|=na)z(aU;31B@!qZ7gG}I@y*^i9}r97Xx)D9 zkGX|?Gz4cQn&7^17d^(+-SE7AlZ)=ZGp9Sbecb72sp5plsT< z=Lm(%rmWu`RQEfQRjNiYLsPP3grKGue?=O994VFa>Kw}1?qxdf6%$pA9=zgrN7u;v z#+Qw(je?DmjiY;P)uuiM6r`7H1EJlRHn-D^P1P60NJR!kEk)FGlHCYn7I;k@>c+#& zo8;ZYETu~twe;pE^WXJc8{ks<*3J%6Z5Hk23s9+txIis>3P+zn^2dTjtq6~=$t#YQ zyDz3s987IEscoA&pQGGBHlt&W_IEV|Im@rsJ^_cqAK3AI(0(I zmz4Zg^j_UJKUn(~<(A{t2tXA+EWoIKP*pAz7!LM)JPm)-Nx^+um?}F_nWMeeR99SA zTh|_H>yaHgo@r^14;_hDD}Q9_TM z_xf|vbAv}7$lo|y=3W10M^K^*5#ZeVuK!lC26d>}QoYM*Oh7nfX>qxIqt(=%VX-O; zL%PJ~WGYVSi_3(9L>p*2J6}6Jl}KlysH_`*RvI)ai`NSKz+ z)CD9fURB+A;nrT)z<~t(eX5@N>hS=rMRwvza-P zH6a(s1nv($7HG;eOpmae-#B^hxf{~xPac2SPy3~O(V-&kDa8_pSwG{; zc3qo>ZhSc>R6aV*`JwXS{(D1laGYvtmvVPbNLgz+`K2J6t;XZ1r?YUIqT=?^s8fq@ zFMP7Ii-W;Z=v6UCywUpAi!Gw^UrS$ppPy|1_IPkgvSnahI`DFDP1X>!qe#|rQnQv% z!?f3r8{F&NFP7cQgq;qAsXE44rcCDN2+YP{lhVY^Lwf<2udDWYf1kI>>o5z&iBP3T z%^DQrDR4l*o)UVRq;+jg&L%cMq%Ly(MsML~>r8FH6E7CUZX=##AMB<;B(KC?oa z90Ww8`RT$4&!kpm|4Y5mtO9hkXeRCmq`=T(^%=_k)4~;Ymt$v3x@yU-QK|}+dRU(xR2j8_5{+dWr-KYx zZ9tNuQ19wfW3|LjPhaktx0r#J=IXf>Q|gKh3DT0;?A#o(aW52lRas)n9&+kahx2W%>;$|& zL2E;9U;x@(t}mPTy|ags(muyek5|B4ULDGNuqEFCOvgi*d)LMfiy;fsBYHIK>DF4r%ZMsUTMS7=&V%8?<{e-c>Ee+;PC;z$s4G>b@D zA}dDXvwXozPdVE9yMez6*>u=!xH4jSb#+5ZrmG-y6mcPn)*5Jf(dxGnA{@L3tmiZIMOp(k_to9&B!VY6=`m9cUQ9pKY5GfGY z70fxFesSL@(EMfL+A|JQbv`8AMdVh5^5s~wRP|emi1XZ>&h0<0yZLM3XHt}P1Ynya z!%C*AG2e(V`)RXzsE#+t`z9Eicr(k%Bd2$Tnt1eb6Bi20arT=Qn3gOImpf-1!D(^b zn0)nj<8qUbYon|6{oJMvKb`qzeTD~!}4Ce(y)3Q^x zQ?t{wyJ@s)RV=ZrJGo5H!TcSjR|Rlz0rQ_KZk-Mef6PPAZmV@Os-`HEGzLRo24fsSu}S*p zy}9;tchUFR`SA6tO{jxus%hfqYwcjSm#q1oxkk2J28_7MvG(i!jkU(*b)0284KEuT zdR=k~iHp85;f`y&L1EcF{RbB_uB1WCGQkTrt92cQm;`R1yI{86^ugwOW}3cqWBVxO zB9Cb^aR%Hk?vh_#Y5j2Sn&!^2{l90g@nxC^N-JQtzRLHX})b~Sm>hhM!M*9YB z{?t-7^>Lxqh(|s@bCVPQer7aTgfI`wBeU|$v>^*Y5|oe%M}0ZQNO?1R{gUiP^!iXKzxuQ_{Vjdlc=RytX!ICvb;J0j z^KFPv)2ZP}+&s*r0-X-!Zkb$k?{qQM>zg2e2Vs*4FL<+{%Gp#e{8{^`pZ>j! z#v3LLGjo16lG;_EG@!rV=j$kxS&4SJ`hJGRB!Ry{q2Agg<;Re4#jV?pFZ9x?`Iae3 zyvj3hTOvRDzWV8-Tl-tg+aD8lBUjn|5_QquEnT;iDf9h|=C7R=TS!>F#-nIZ2TeTL z@y<^}Nz;etkLo=!vy#x$DE(7>H1a*-Z{|T7+U-h_Z_?+)87)= zq}oW|q}tX#iM(>TjkyuQNgb9k{B+q7NXSXRKbaha)RxO`nJUU%kwUNJtcsqXgNilF z*mPe{qH;%}5(f!I{?v+5Mt~9$&HR0c;BVH2RxGpnDXAE4!&KRyx#*w9Wh<4=0zN;x zFOpg@8X4H27rf_V5)-j>0B{1?a5ScxdE1Oom}&2R^~BTFbmJ$Gji+%?sg|HfDH7I{ z&ru%=4;XBy=-U`5AR8k>7a6a$sIvpxfj8cLJklhWOfmXH?zgUL{z6_l|;KW+bUOx6A&f=7V| z8T(L8;o|WLPQqHL&M&w}NbdUtGA11`X0a$Zra{7r2wNYX*yqg8g9`HPUg2X3gAmb~ zXdk$GMy9<27Y$O3UkM@$ra-0Y$z)sPm-h|*1AxEyPXOU>0nrdVDKNWvbN_^WlLeB8 zCRG}M`#&Sib}@G^f-GMJKaYcA*T|3PJ6cpo9&$kPwj5fcYTw~UAWdjr2@o|48v1yr z{sjU=p6;Gn1k)g9!?g6@r_pjt0#+;K0ti15M43kfBTdL`7oNpTagi-wN?_EAVoG32 zb9S`)ZNIp+!64zu*|>?ob9j$mWdAecANAfAiSIkMv2zj_nMpm5!1QOaK}Zv#mt$@> ztucq|#`x#&F={&lL0eD7T*>c+v=JPH5@&@W*TQQk93xY!_t85{=^cqyzuV^PjqpMa z!D9^SYN^cb>F9Sw9e%f(K3ul(`g5O)i0GRk7`5W^yh`Tf(q)Ok|2-qJqx_Upef%Dv zTOhF5r%?n+1Q~Uo#z;z8dP|ree+ON>WeXsMGNvLXxRE!2`|SC=za)fosWJ=_VxgR| zrDlTG7>6CM;|($O3QW`dx)Awm>(>CnC*&w+V>gb+8Hd+_0Fs2~P=U@UORoVMEJ)Wj zckY(LeK#DCuD*&vOyxfiBe+kpZ__hQta<<+3erhM`rlKn@7yVY`~XJek)~;mJt=a_ z!ssCrXa*%`-Z71|{z07Uf-bq0H^{_7r^~xIdUtHA-A6BD~{oALZn44 z;~%~eiR5{A)522n@$NaK%SdVQuM-4&a^`p-5=DGtN-6dj{RxCJ_GwYTKmtJ%LamJr z4`!*tn5~I49{?)vsY4c;Oq_L~XFQC9eL|01Zt7>>?8+kqHX7f_tfM4^RrwOs|LeI+TCAojBZxF)=# z91S$UXX69GidJM+NLO;jpv$6kQ7Lu=lBW~;0kZ&bhIvkKffz7J>w;ngpVxX|OTm5b z9ZmtqpdOIPltqd(fnra}FlCf9X)%{0C>Et0IG?Vv%Vn}bSx67~wBFJLc^SaP<8lUp znC6t95kAIHiU&!Hf7(RQLooPhi=>pN|A8$zTXRhhDIl9JiBud};m-zDP=Rvcl6ilT z8rBbr5s6zAq5FbqHELi0*W*Rug$i;`e17wQCP^Z_#qj_JwMZX?v50FZ3I)Z*7j+!mQ~qPSDduSp!FXOaVdUhF+PA$GGl2!`iro58-zIbKpdW6UUs1D>|fXt)h?j! z1@EF2EsnEy)drE2YAaAT;I9!tf@17W-@D~7{TpOdpuPe4!+)M~Pup@fu|WC9k(nB8 zrvtO71IfscLG>px7WIk%pMe}TEH(r<1{ThRm+#8y3@6wFjtY?&f71_whFIx#4XgRj zVS#@dxJwSGYD4Iv^FFSX=9k$X1111wE)$-PF21;rFL z37C#nWS^T6iev<5P7HXg?HLodJ@o_|Rz9Qt$}$)N*hQrsyp8?l2rz3wTU~yHCj?il zV4vx*f?tu;97N%p2Pt~Xiq81kF3m+jsI1^5_Hr^AV&hWq+8e!CE-26l!rMg^G8K^U zh~a)#n#i|fl@@7IL5hu1nbBZ@ngrTG0K8bBQbdl#E2w{|0cOU4@kBrxIN=#qroIwJ zBoYAWQ3n;+!kvOT{H*3t`Pr+hbbmf1qgD}79(1Wu-cWw|;u><4+QlYul)_!x^nNFu&9T)kqS@Cp>@A247e zmYT>wF0_D?c>N2DJYlm;!UxH(5z89FL5~7fruA=KGlzgQ=Mr^fVI&toxXYF!rWR6Z7!4`wViHB0;vxxJkm4;VA`QeK#>k$v z4N`JeqNJ|lQL79nk^Bmv2JIGgM_i@e(#w%lK1vaw$8CVaWZHSx>Q~r|Zs8{+iIG{C z8eAo|@IW9IP)G?RVBLE+83=Ty%$K?EVq6)UDoJ8rIUu?fE!!w(gzyjU#r(??cb69i za8+US{IUf}nA!ILps8bmU#%JJ(0&AMpU1=f07ZjWV1}|L`x3imdUE}FyBqQoNS+br z_!IU+RO}jQ&zN85H#1=maVa4f^dt-~%bz|%fyE*5;EID!j`V+`6G8IQ%rbXNFhelI zKswQBl!F84?tAHsClKd1bPpIv$_YtOU|XU=xIe7O+yOidlBc)&5bim|^_cdzUt!&& z3$A34?~UQ@KLV(={n-|`ijlULDG_7NuwgZ5@Vjw8wnc`IA73ZU_XEkOu{By0shK8o-~K}=UZ@JTLtWJF%C>F_ACkAX8q{+5jWP1% zFIaRWcsWyw_;C>4G;Sbf7-DF%)gP33{eGM6{z&S@SQ5szHuYU(Ku++UXz)8!afAS$ zvm8bK!L}h7ddhU2ozs}A6o>tz_ z{68Zbh2TLXvJdi}PlfA4;qkBin>elSwmaTLlR_{k;#;!u$B*?EOLrKVia_sL_yQ(&Wg$5!+b;?6vejK zoWq9)LT2TIr1G%^Lgpy4(pDOD5Sa1oi;lOk8-Ec;ABY5w#?s+4kYLo!$>W4)Y1N7< zF!DjbX2zw&U;yesnDo7es8#sPaL42SD7l#!Nr=Yj z0kPkkQ%1mS)>xrIc>I=d%xKIwUQ{%lCr+~`rrZDo3^aPysa00Kr4 z*7kUV0@~fnf>5B6xH@qY_$vTfPcK8NMwjzmMH0iv{PNR$in1I+3j@RXNHbL1Zg4!v z#tQai(i?kj7$fVDzU%g{V=kRPD=>?_*Xmp`tc4U(+GQV6E#v9_y#{NZ`D_NhiBCP8GKDC z_Ot2kA$%_Jb0pUwNT#z-o+~K=4 zIl{AtAPfgT@ZI9`B1TmNqCkCPVHElj;n^b#?XFWDK3Q}TU}-{av;-vZp_I}uSK!BZ z4gpJ*>WrAtZyp%I34hM<#~CzJ5fOnze13Aih`Z%KCXe+PyQW;qp4SIpS_$;chyVvE zth}W9RvY0u26v<&{**T|l2SWT3_?-CmLqtp%K9q`>2ZfWI(7}2RB2r!wy+)?2t;DP zSb`e-Zdf0?Mk{C;=QbAfOx!?jN}D_HKB)^Z;MogDQa`o-Iiz6(XC>x21e>^bot@K1 zWdp?)JPDBR8tH1hM@N76ZeKbbLa8582YJ~xqWkZSd4WBS;=J9@YPIERV*>Bftk)L@ z@ttg7s z7En`2s8@s+m>Q_Qfsa_4=hM~klwT{qZS!D*MpLAYa^+MSv`uFV6D21~XAcX6idY=Y z(gay<)Ju$aCGfbwnx*ND>Fw#goToA)+@g>?D}=3PwOEEorKe%@1guTzk^q^-U2!S) zRG60ylGoFuZQDpbbtC4uI};XEb;hu&+NHF()eaUDnJm4fSMp5I3N2;`0qu0~(U&J* zI`ht6>aUXkJV<<^C37?frYMW)2;#txDTk>jq`X2HB{QTFbhGwSF37=E2MSg^3a}5^psnZ@v2a zHWoHC313Ft?Vj}xg2SP-INQ!V{&G?CvadRl0> zeYqoUnrpw|ZWKV4>5*(Kd=e)3Wlq&z@zVyc#sbr7{RK0)&McLm6@+fk6enfggWimu z)2Y1~?yzCdP1+8nM-$;g0AvxFO#}Ch47{8bP2oslsHv0l?W63*m8Ok&tW9;?j<;hy z)|S_Uod#P~ct>*O^{&Qoe6iExfhC>#yWT~&^ol_O@CkmKXZ&z@BKS{cF{l zzADM{H4`OgQv?4~@WFOn@oa2pBA;c@tYDj$B=`(%(&5#KwNy8Z(ne^J82y}QUr8kx zDNuXFu-d{ey&dqSE1RIvbi2A!wVWe)(9!cdCqANx(+2O8LnpJlv zRhG+J4rSFf+k8X34=!Nk1%}W>uQ@Teu2{kM)y?zC6Y?R!t^#z$G6o$O-mL+9Ww=q4 zoIPPg74r`D1y(>s^W^b^W|rk`Yk z&@pdNx(lAXZcktb03n|SpC4hZ2P(Bk9_V}c=OGN5XbYj2xgk}V^DuioHi;w{V_j6wI z&b+pCY%@kDxEpJDDwU7&wn`CNPR3RSnrH-J@w)=CV zCL-SSarVcYn`WSn4IB7=QY|?+X-8tQHJ0-mlNe~6ntWLv?m4`(HKHRyEfSKS?j`Z5 zJ-V{-u;Dm25b21GB_IE&;4+(%;LtYkjq@j0DOUqm7uP7)qCl^jqm&~650jNV6Y#E4 zQ7gvjj6D1M@fiAR=4`pJBq4HT?Mm&gO~&eHSKjcWz0h#N@oERMJTh3-a))%(jNv|k zgU5%mBmjV`@h-n25uyCVkY~XWvR0TrVDqMFhR?z|l7KYTCcslEyS25xDC93lCkT{C zt{Y}2Fu+Zv+f6mq{($;+A(^oypAA54h&jrIGT83!__&!wfmcmY&wqaWfs|vA(~?7d zUZPz==98V7XRyi3EK`dBm9H13o-WI@<%|R=d=Gt0IN^}=SO?_qMk(90UqN24M-6*U z)8^6ykr5~^QNX)6y6hAW`Gk|PQ_%t*x(C6LC`?641hZ+J@K5{hC zXrsbz(64u)v_{o*Qf*>^@5J7th_{IcN{DrRR~o14aYbLM0Z_G@HvDpabc<+-V?Ss7 zt=e1Fl?w&eHO^o+mbx7CYyUTwjSf~iQ&xKQo(>-!=e0;EPvUv0VE18k=qrj9-FFZRTz6Kn&4&RvT+z7?-agO%(BRS?Ket{< zRYP2t`5)2&fC!xGQ+LM8v~kdI!rB;XULv?sVSc~IWYXQHW`sv4<8pPc`)I(NF07~c zK1nZKv%4tAF?g;~d3+!GC!Td$S#5Zed(*Vz>q6)X~>*sl(*Axphfq&$Y}1Vx}{+)`!0-y!tW+n&pd` z@1`79pY+Ddj7&I~WUE~%Ok8K+w3`=N8EoR%jH{*eZqAKm z&SBpC(^JJcbl8wOIMH3TR?9n9*uiQ8{TV(=NN$`+98R2u;<~ zTOf8Y?KQ0#|Ejpn`MOd94*<(kS?SV_@b8RNsqT;UD2MMi#u@3Ybl$wxCDMJS`$G4% zF0(GDF2C+uUGc(*ewg_9Y9&@&F`u!nO9S}o6o$OmLq}4v`%J#0$OVW0QO}_%Md4k0 zrNycI)xydQIB;6-WKiCY^nPFQPvgS7{3+s|e)C-`=Z2xbl?couedMK`9i{5jxBTwmaiw`{7LI*8KhlUQ ztxesX-a`wyUw0mMP4`2sT_f$=C2A@y*G{Io-qdRoRnBp9(`w9L`qq!Rl40W|<5+{e zgW*Fm!&oD|BjKYmV_4(8mKYb^Y* z8?D|B-H_Ns-|E~7-B$N$tG>ARvUm&klPu=#uL?ZUk723KdvY12=eGXGu|dFbc# zbLFP85i9E!JYF{KzPt~&wejKhX~+0yYyaZ{`t!$(dEa?|t33b5()aI7-0$m!XF+B& z05^UB31V5yY%m>!S-|C+K*b<+M6kdP0IMT{#WQ0y&}5*W@SFqm!SSE{e14|CR_-R# Qfr=SCUHx3vIVCg!0Q?Y{q5uE@ diff --git a/public/img/default_avatar.svg b/public/img/default_avatar.svg new file mode 100644 index 00000000..4586017b --- /dev/null +++ b/public/img/default_avatar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Services/UserSystem/UserAvatarHelper.php b/src/Services/UserSystem/UserAvatarHelper.php index ac289305..22690db5 100644 --- a/src/Services/UserSystem/UserAvatarHelper.php +++ b/src/Services/UserSystem/UserAvatarHelper.php @@ -20,9 +20,9 @@ declare(strict_types=1); * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ + namespace App\Services\UserSystem; -use Imagine\Exception\RuntimeException; use App\Entity\Attachments\Attachment; use App\Entity\Attachments\AttachmentType; use App\Entity\Attachments\UserAttachment; @@ -30,16 +30,23 @@ use App\Entity\UserSystem\User; use App\Services\Attachments\AttachmentSubmitHandler; use App\Services\Attachments\AttachmentURLGenerator; use Doctrine\ORM\EntityManagerInterface; -use Liip\ImagineBundle\Service\FilterService; use Symfony\Component\Asset\Packages; use Symfony\Component\HttpFoundation\File\UploadedFile; class UserAvatarHelper { - public const IMG_DEFAULT_AVATAR_PATH = '/img/default_avatar.png'; + /** + * Path to the default avatar image (must not start with a slash, or the asset package will not work) + */ + public const IMG_DEFAULT_AVATAR_PATH = 'img/default_avatar.svg'; - public function __construct(private readonly bool $use_gravatar, private readonly Packages $packages, private readonly AttachmentURLGenerator $attachmentURLGenerator, private readonly FilterService $filterService, private readonly EntityManagerInterface $entityManager, private readonly AttachmentSubmitHandler $submitHandler) - { + public function __construct( + private readonly bool $use_gravatar, + private readonly Packages $packages, + private readonly AttachmentURLGenerator $attachmentURLGenerator, + private readonly EntityManagerInterface $entityManager, + private readonly AttachmentSubmitHandler $submitHandler + ) { } @@ -78,13 +85,8 @@ class UserAvatarHelper return $this->getGravatar($user, 50); //50px wide picture } - try { - //Otherwise we can serve the relative path via Asset component - return $this->filterService->getUrlOfFilteredImage(self::IMG_DEFAULT_AVATAR_PATH, 'thumbnail_xs'); - } catch (RuntimeException) { - //If the filter fails, we can not serve the thumbnail and fall back to the original image and log an warning - return $this->packages->getUrl(self::IMG_DEFAULT_AVATAR_PATH); - } + //Otherwise serve the default image (its an SVG, so we dont need to thumbnail it) + return $this->packages->getUrl(self::IMG_DEFAULT_AVATAR_PATH); } public function getAvatarMdURL(User $user): string @@ -100,20 +102,15 @@ class UserAvatarHelper return $this->getGravatar($user, 150); } - try { - //Otherwise we can serve the relative path via Asset component - return $this->filterService->getUrlOfFilteredImage(self::IMG_DEFAULT_AVATAR_PATH, 'thumbnail_xs'); - } catch (RuntimeException) { - //If the filter fails, we can not serve the thumbnail and fall back to the original image and log an warning - return $this->packages->getUrl(self::IMG_DEFAULT_AVATAR_PATH); - } + //Otherwise serve the default image (its an SVG, so we dont need to thumbnail it) + return $this->packages->getUrl(self::IMG_DEFAULT_AVATAR_PATH); } /** * Get either a Gravatar URL or complete image tag for a specified email address. * - * @param User $user The user for which the gravator should be generated + * @param User $user The user for which the gravator should be generated * @param int $s Size in pixels, defaults to 80px [ 1 - 2048 ] * @param string $d Default imageset to use [ 404 | mm | identicon | monsterid | wavatar ] * @param string $r Maximum rating (inclusive) [ g | pg | r | x ] @@ -131,7 +128,7 @@ class UserAvatarHelper $url = 'https://www.gravatar.com/avatar/'; $url .= md5(strtolower(trim($email))); - return $url . "?s=$s&d=$d&r=$r"; + return $url."?s=$s&d=$d&r=$r"; } /**