@@ -122,41 +122,53 @@ function formatDuration($seconds)
122122 return $ formattedDuration ;
123123 }
124124
125- function timeElapsedString ($ datetime , $ full = false )
126- {
127- $ now = new DateTime ;
128- $ ago = new DateTime ($ datetime );
129- $ diff = $ now ->diff ($ ago );
130-
131- // Ajout des semaines à partir des jours
132- $ diff ->w = floor ($ diff ->d / 7 );
133- $ diff ->d -= $ diff ->w * 7 ;
134-
135- // Tableau des unités de temps avec singulier/pluriel
136- $ units = [
137- 'y ' => ['année ' , 'années ' ],
138- 'm ' => ['mois ' , 'mois ' ],
139- 'w ' => ['semaine ' , 'semaines ' ],
140- 'd ' => ['jour ' , 'jours ' ],
141- 'h ' => ['heure ' , 'heures ' ],
142- 'i ' => ['minute ' , 'minutes ' ],
143- 's ' => ['seconde ' , 'secondes ' ],
144- ];
145-
146- $ strings = [];
147- foreach ($ units as $ key => [$ singular , $ plural ]) {
148- if ($ diff ->$ key ) {
149- $ count = $ diff ->$ key ;
150- $ strings [] = $ count . ' ' . ($ count > 1 ? $ plural : $ singular );
151- }
152- }
125+ /**
126+ * @param string $datetime
127+ * @param bool $full
128+ * @return string
129+ */
130+ function timeElapsedString ($ datetime , $ full = false )
131+ {
132+ $ now = new DateTime ();
133+ $ ago = new DateTime ($ datetime );
134+ $ diff = $ now ->diff ($ ago );
135+
136+ // On extrait les valeurs dans un tableau pour pouvoir ajouter les semaines
137+ // sans modifier l'objet DateInterval original
138+ $ diffValues = [
139+ 'y ' => $ diff ->y ,
140+ 'm ' => $ diff ->m ,
141+ 'w ' => (int )floor ($ diff ->d / 7 ),
142+ 'd ' => $ diff ->d % 7 , // Le reste des jours après avoir retiré les semaines
143+ 'h ' => $ diff ->h ,
144+ 'i ' => $ diff ->i ,
145+ 's ' => $ diff ->s ,
146+ ];
147+
148+ $ units = [
149+ 'y ' => ['année ' , 'années ' ],
150+ 'm ' => ['mois ' , 'mois ' ],
151+ 'w ' => ['semaine ' , 'semaines ' ],
152+ 'd ' => ['jour ' , 'jours ' ],
153+ 'h ' => ['heure ' , 'heures ' ],
154+ 'i ' => ['minute ' , 'minutes ' ],
155+ 's ' => ['seconde ' , 'secondes ' ],
156+ ];
157+
158+ $ strings = [];
159+ foreach ($ units as $ key => $ names ) {
160+ if ($ diffValues [$ key ] > 0 ) {
161+ $ count = $ diffValues [$ key ];
162+ $ strings [] = $ count . ' ' . ($ count > 1 ? $ names [1 ] : $ names [0 ]);
163+ }
164+ }
153165
154- if (!$ full ) {
155- $ strings = array_slice ($ strings , 0 , 1 );
156- }
166+ if (!$ full ) {
167+ $ strings = array_slice ($ strings , 0 , 1 );
168+ }
157169
158- return $ strings ? 'il y a ' . implode (', ' , $ strings ) : 'à l \'instant ' ;
159- }
170+ return $ strings ? 'il y a ' . implode (', ' , $ strings ) : 'à l \'instant ' ;
171+ }
160172
161173
162174 $ events = frigate::showEvents ();
0 commit comments