Completed
Push — master ( fd5cc0...dec8bc )
by cam
01:14
created
ecrire/inc/filtres_dates.php 1 patch
Indentation   +590 added lines, -590 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Filtres
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 
21 21
 
@@ -36,11 +36,11 @@  discard block
 block discarded – undo
36 36
  *    Date au format SQL tel que `2008-04-01` sinon ''
37 37
  **/
38 38
 function extraire_date($texte): string {
39
-	// format = 2001-08
40
-	if (preg_match(',([1-2][0-9]{3})[^0-9]*(1[0-2]|0?[1-9]),', $texte, $regs)) {
41
-		return $regs[1] . '-' . sprintf('%02d', $regs[2]) . '-01';
42
-	}
43
-	return '';
39
+    // format = 2001-08
40
+    if (preg_match(',([1-2][0-9]{3})[^0-9]*(1[0-2]|0?[1-9]),', $texte, $regs)) {
41
+        return $regs[1] . '-' . sprintf('%02d', $regs[2]) . '-01';
42
+    }
43
+    return '';
44 44
 }
45 45
 
46 46
 
@@ -62,29 +62,29 @@  discard block
 block discarded – undo
62 62
  *     - une chaîne vide si la date est considérée nulle
63 63
  **/
64 64
 function normaliser_date($date, $forcer_jour = false): string {
65
-	$date = vider_date($date);
66
-	if ($date) {
67
-		if (preg_match('/^[0-9]{8,10}$/', $date)) {
68
-			$date = date('Y-m-d H:i:s', $date);
69
-		}
70
-		if (preg_match('#^([12][0-9]{3})([-/]00)?( [-0-9:]+)?$#', $date, $regs)) {
71
-			$regs = array_pad($regs, 4, null); // eviter notice php
72
-			$date = $regs[1] . '-00-00' . $regs[3];
73
-		} else {
74
-			if (preg_match('#^([12][0-9]{3}[-/][01]?[0-9])([-/]00)?( [-0-9:]+)?$#', $date, $regs)) {
75
-				$regs = array_pad($regs, 4, null); // eviter notice php
76
-				$date = preg_replace('@/@', '-', $regs[1]) . '-00' . $regs[3];
77
-			} else {
78
-				$date = date('Y-m-d H:i:s', strtotime($date));
79
-			}
80
-		}
81
-
82
-		if ($forcer_jour) {
83
-			$date = str_replace('-00', '-01', $date);
84
-		}
85
-	}
86
-
87
-	return $date;
65
+    $date = vider_date($date);
66
+    if ($date) {
67
+        if (preg_match('/^[0-9]{8,10}$/', $date)) {
68
+            $date = date('Y-m-d H:i:s', $date);
69
+        }
70
+        if (preg_match('#^([12][0-9]{3})([-/]00)?( [-0-9:]+)?$#', $date, $regs)) {
71
+            $regs = array_pad($regs, 4, null); // eviter notice php
72
+            $date = $regs[1] . '-00-00' . $regs[3];
73
+        } else {
74
+            if (preg_match('#^([12][0-9]{3}[-/][01]?[0-9])([-/]00)?( [-0-9:]+)?$#', $date, $regs)) {
75
+                $regs = array_pad($regs, 4, null); // eviter notice php
76
+                $date = preg_replace('@/@', '-', $regs[1]) . '-00' . $regs[3];
77
+            } else {
78
+                $date = date('Y-m-d H:i:s', strtotime($date));
79
+            }
80
+        }
81
+
82
+        if ($forcer_jour) {
83
+            $date = str_replace('-00', '-01', $date);
84
+        }
85
+    }
86
+
87
+    return $date;
88 88
 }
89 89
 
90 90
 /**
@@ -97,23 +97,23 @@  discard block
 block discarded – undo
97 97
  *     - Une chaine vide
98 98
  **/
99 99
 function vider_date($letexte, $verif_format_date = false): string {
100
-	$letexte ??= '';
101
-	if (
102
-		!$verif_format_date
103
-		or (in_array(strlen($letexte), [10,19]) and
104
-			  preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}(\s[0-9]{2}:[0-9]{2}:[0-9]{2})?$/', $letexte))
105
-	) {
106
-		if (strncmp('0000-00-00', $letexte, 10) == 0) {
107
-			return '';
108
-		}
109
-		if (strncmp('0001-01-01', $letexte, 10) == 0) {
110
-			return '';
111
-		}
112
-		if (strncmp('1970-01-01', $letexte, 10) == 0) {
113
-			return '';
114
-		}  // eviter le bug GMT-1
115
-	}
116
-	return $letexte;
100
+    $letexte ??= '';
101
+    if (
102
+        !$verif_format_date
103
+        or (in_array(strlen($letexte), [10,19]) and
104
+              preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}(\s[0-9]{2}:[0-9]{2}:[0-9]{2})?$/', $letexte))
105
+    ) {
106
+        if (strncmp('0000-00-00', $letexte, 10) == 0) {
107
+            return '';
108
+        }
109
+        if (strncmp('0001-01-01', $letexte, 10) == 0) {
110
+            return '';
111
+        }
112
+        if (strncmp('1970-01-01', $letexte, 10) == 0) {
113
+            return '';
114
+        }  // eviter le bug GMT-1
115
+    }
116
+    return $letexte;
117 117
 }
118 118
 
119 119
 /**
@@ -129,17 +129,17 @@  discard block
 block discarded – undo
129 129
  **/
130 130
 function recup_heure($date): array {
131 131
 
132
-	if (preg_match('#([0-9]{1,2}):([0-9]{1,2})(?::([0-9]{1,2}))?#', $date, $elements)) {
133
-		array_shift($elements);
134
-		if (!isset($elements[2])) {
135
-			$elements[2] = 0;
136
-		}
137
-		$heure = $elements;
138
-	} else {
139
-		$heure = [0, 0, 0];
140
-	}
141
-
142
-	return $heure;
132
+    if (preg_match('#([0-9]{1,2}):([0-9]{1,2})(?::([0-9]{1,2}))?#', $date, $elements)) {
133
+        array_shift($elements);
134
+        if (!isset($elements[2])) {
135
+            $elements[2] = 0;
136
+        }
137
+        $heure = $elements;
138
+    } else {
139
+        $heure = [0, 0, 0];
140
+    }
141
+
142
+    return $heure;
143 143
 }
144 144
 
145 145
 /**
@@ -153,13 +153,13 @@  discard block
 block discarded – undo
153 153
  * @return string heures, sinon 0
154 154
  **/
155 155
 function heures($numdate): string {
156
-	$heures = null;
157
-	$date_array = recup_heure($numdate);
158
-	if ($date_array) {
159
-		[$heures, $minutes, $secondes] = $date_array;
160
-	}
156
+    $heures = null;
157
+    $date_array = recup_heure($numdate);
158
+    if ($date_array) {
159
+        [$heures, $minutes, $secondes] = $date_array;
160
+    }
161 161
 
162
-	return $heures;
162
+    return $heures;
163 163
 }
164 164
 
165 165
 /**
@@ -173,13 +173,13 @@  discard block
 block discarded – undo
173 173
  * @return string minutes, sinon 0
174 174
  **/
175 175
 function minutes($numdate): string {
176
-	$minutes = null;
177
-	$date_array = recup_heure($numdate);
178
-	if ($date_array) {
179
-		[$heures, $minutes, $secondes] = $date_array;
180
-	}
176
+    $minutes = null;
177
+    $date_array = recup_heure($numdate);
178
+    if ($date_array) {
179
+        [$heures, $minutes, $secondes] = $date_array;
180
+    }
181 181
 
182
-	return $minutes;
182
+    return $minutes;
183 183
 }
184 184
 
185 185
 /**
@@ -193,13 +193,13 @@  discard block
 block discarded – undo
193 193
  * @return string secondes, sinon 0
194 194
  **/
195 195
 function secondes($numdate): string {
196
-	$secondes = null;
197
-	$date_array = recup_heure($numdate);
198
-	if ($date_array) {
199
-		[$heures, $minutes, $secondes] = $date_array;
200
-	}
196
+    $secondes = null;
197
+    $date_array = recup_heure($numdate);
198
+    if ($date_array) {
199
+        [$heures, $minutes, $secondes] = $date_array;
200
+    }
201 201
 
202
-	return $secondes;
202
+    return $secondes;
203 203
 }
204 204
 
205 205
 /**
@@ -218,11 +218,11 @@  discard block
 block discarded – undo
218 218
  * @return string L'heure formatée dans la langue en cours.
219 219
  **/
220 220
 function heures_minutes($numdate, $forme = ''): string {
221
-	if ($forme !== 'abbr') {
222
-		return _T('date_fmt_heures_minutes', ['h' => heures($numdate), 'm' => minutes($numdate)]);
223
-	} else {
224
-		return _T('date_fmt_heures_minutes_court', ['h' => heures($numdate), 'm' => minutes($numdate)]);
225
-	}
221
+    if ($forme !== 'abbr') {
222
+        return _T('date_fmt_heures_minutes', ['h' => heures($numdate), 'm' => minutes($numdate)]);
223
+    } else {
224
+        return _T('date_fmt_heures_minutes_court', ['h' => heures($numdate), 'm' => minutes($numdate)]);
225
+    }
226 226
 }
227 227
 
228 228
 /**
@@ -247,57 +247,57 @@  discard block
 block discarded – undo
247 247
  * @return array [année, mois, jour, heures, minutes, secondes] ou []
248 248
  **/
249 249
 function recup_date($numdate, $forcer_jour = true): array {
250
-	if (!$numdate) {
251
-		return [];
252
-	}
253
-	$heures = $minutes = $secondes = 0;
254
-	if (preg_match('#([0-9]{1,2})/([0-9]{1,2})/([0-9]{4}|[0-9]{1,2})#', $numdate, $regs)) {
255
-		$jour = $regs[1];
256
-		$mois = $regs[2];
257
-		$annee = $regs[3];
258
-		if ($annee < 90) {
259
-			$annee = 2000 + $annee;
260
-		} elseif ($annee < 100) {
261
-			$annee = 1900 + $annee;
262
-		}
263
-		[$heures, $minutes, $secondes] = recup_heure($numdate);
264
-	} elseif (preg_match('#([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})#', $numdate, $regs)) {
265
-		$annee = $regs[1];
266
-		$mois = $regs[2];
267
-		$jour = $regs[3];
268
-		[$heures, $minutes, $secondes] = recup_heure($numdate);
269
-	} elseif (preg_match('#([0-9]{4})-([0-9]{2})#', $numdate, $regs)) {
270
-		$annee = $regs[1];
271
-		$mois = $regs[2];
272
-		$jour = '';
273
-		[$heures, $minutes, $secondes] = recup_heure($numdate);
274
-	} elseif (preg_match('#^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$#', $numdate, $regs)) {
275
-		$annee = $regs[1];
276
-		$mois = $regs[2];
277
-		$jour = $regs[3];
278
-		$heures = $regs[4];
279
-		$minutes = $regs[5];
280
-		$secondes = $regs[6];
281
-	} else {
282
-		$annee = $mois = $jour = '';
283
-	}
284
-	if ($annee > 4000) {
285
-		$annee -= 9000;
286
-	}
287
-	if (strlen($jour) and substr($jour, 0, 1) == '0') {
288
-		$jour = substr($jour, 1);
289
-	}
290
-
291
-	if ($forcer_jour and $jour == '0') {
292
-		$jour = '1';
293
-	}
294
-	if ($forcer_jour and $mois == '0') {
295
-		$mois = '1';
296
-	}
297
-	if ($annee or $mois or $jour or $heures or $minutes or $secondes) {
298
-		return [$annee, $mois, $jour, $heures, $minutes, $secondes];
299
-	}
300
-	return [];
250
+    if (!$numdate) {
251
+        return [];
252
+    }
253
+    $heures = $minutes = $secondes = 0;
254
+    if (preg_match('#([0-9]{1,2})/([0-9]{1,2})/([0-9]{4}|[0-9]{1,2})#', $numdate, $regs)) {
255
+        $jour = $regs[1];
256
+        $mois = $regs[2];
257
+        $annee = $regs[3];
258
+        if ($annee < 90) {
259
+            $annee = 2000 + $annee;
260
+        } elseif ($annee < 100) {
261
+            $annee = 1900 + $annee;
262
+        }
263
+        [$heures, $minutes, $secondes] = recup_heure($numdate);
264
+    } elseif (preg_match('#([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})#', $numdate, $regs)) {
265
+        $annee = $regs[1];
266
+        $mois = $regs[2];
267
+        $jour = $regs[3];
268
+        [$heures, $minutes, $secondes] = recup_heure($numdate);
269
+    } elseif (preg_match('#([0-9]{4})-([0-9]{2})#', $numdate, $regs)) {
270
+        $annee = $regs[1];
271
+        $mois = $regs[2];
272
+        $jour = '';
273
+        [$heures, $minutes, $secondes] = recup_heure($numdate);
274
+    } elseif (preg_match('#^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$#', $numdate, $regs)) {
275
+        $annee = $regs[1];
276
+        $mois = $regs[2];
277
+        $jour = $regs[3];
278
+        $heures = $regs[4];
279
+        $minutes = $regs[5];
280
+        $secondes = $regs[6];
281
+    } else {
282
+        $annee = $mois = $jour = '';
283
+    }
284
+    if ($annee > 4000) {
285
+        $annee -= 9000;
286
+    }
287
+    if (strlen($jour) and substr($jour, 0, 1) == '0') {
288
+        $jour = substr($jour, 1);
289
+    }
290
+
291
+    if ($forcer_jour and $jour == '0') {
292
+        $jour = '1';
293
+    }
294
+    if ($forcer_jour and $mois == '0') {
295
+        $mois = '1';
296
+    }
297
+    if ($annee or $mois or $jour or $heures or $minutes or $secondes) {
298
+        return [$annee, $mois, $jour, $heures, $minutes, $secondes];
299
+    }
300
+    return [];
301 301
 }
302 302
 
303 303
 /**
@@ -324,10 +324,10 @@  discard block
 block discarded – undo
324 324
  *     La date relative ou complète
325 325
  **/
326 326
 function date_interface($date, $decalage_maxi = 43200 /* 12*3600 */): string {
327
-	return sinon(
328
-		date_relative($date, $decalage_maxi),
329
-		affdate_heure($date)
330
-	);
327
+    return sinon(
328
+        date_relative($date, $decalage_maxi),
329
+        affdate_heure($date)
330
+    );
331 331
 }
332 332
 
333 333
 /**
@@ -360,86 +360,86 @@  discard block
 block discarded – undo
360 360
  **/
361 361
 function date_relative($date, $decalage_maxi = 0, $ref_date = null): string {
362 362
 
363
-	if (!$date) {
364
-		return '';
365
-	}
366
-
367
-	if (is_null($ref_date)) {
368
-		$ref_time = time();
369
-	} else {
370
-		$ref_time = strtotime($ref_date);
371
-	}
372
-
373
-	$decal = date('U', $ref_time) - date('U', strtotime($date));
374
-
375
-	if ($decalage_maxi and ($decal > $decalage_maxi or $decal < 0)) {
376
-		return '';
377
-	}
378
-
379
-	if ($decal < 0) {
380
-		$il_y_a = 'date_dans';
381
-		$decal = -1 * $decal;
382
-	} else {
383
-		$il_y_a = 'date_il_y_a';
384
-	}
385
-
386
-	if ($decal > 3600 * 24 * 30 * 6) {
387
-		return affdate_court($date);
388
-	}
389
-
390
-	if ($decal > 3600 * 24 * 30) {
391
-		$mois = floor($decal / (3600 * 24 * 30));
392
-		if ($mois < 2) {
393
-			$delai = "$mois " . _T('date_un_mois');
394
-		} else {
395
-			$delai = "$mois " . _T('date_mois');
396
-		}
397
-	} else {
398
-		if ($decal > 3600 * 24 * 7) {
399
-			$semaines = floor($decal / (3600 * 24 * 7));
400
-			if ($semaines < 2) {
401
-				$delai = "$semaines " . _T('date_une_semaine');
402
-			} else {
403
-				$delai = "$semaines " . _T('date_semaines');
404
-			}
405
-		} else {
406
-			if ($decal > 3600 * 24) {
407
-				$jours = floor($decal / (3600 * 24));
408
-				if ($jours < 2) {
409
-					return $il_y_a == 'date_dans' ? _T('date_demain') : _T('date_hier');
410
-				} else {
411
-					$delai = "$jours " . _T('date_jours');
412
-				}
413
-			} else {
414
-				if ($decal >= 3600) {
415
-					$heures = floor($decal / 3600);
416
-					if ($heures < 2) {
417
-						$delai = "$heures " . _T('date_une_heure');
418
-					} else {
419
-						$delai = "$heures " . _T('date_heures');
420
-					}
421
-				} else {
422
-					if ($decal >= 60) {
423
-						$minutes = floor($decal / 60);
424
-						if ($minutes < 2) {
425
-							$delai = "$minutes " . _T('date_une_minute');
426
-						} else {
427
-							$delai = "$minutes " . _T('date_minutes');
428
-						}
429
-					} else {
430
-						$secondes = ceil($decal);
431
-						if ($secondes < 2) {
432
-							$delai = "$secondes " . _T('date_une_seconde');
433
-						} else {
434
-							$delai = "$secondes " . _T('date_secondes');
435
-						}
436
-					}
437
-				}
438
-			}
439
-		}
440
-	}
441
-
442
-	return _T($il_y_a, ['delai' => $delai]);
363
+    if (!$date) {
364
+        return '';
365
+    }
366
+
367
+    if (is_null($ref_date)) {
368
+        $ref_time = time();
369
+    } else {
370
+        $ref_time = strtotime($ref_date);
371
+    }
372
+
373
+    $decal = date('U', $ref_time) - date('U', strtotime($date));
374
+
375
+    if ($decalage_maxi and ($decal > $decalage_maxi or $decal < 0)) {
376
+        return '';
377
+    }
378
+
379
+    if ($decal < 0) {
380
+        $il_y_a = 'date_dans';
381
+        $decal = -1 * $decal;
382
+    } else {
383
+        $il_y_a = 'date_il_y_a';
384
+    }
385
+
386
+    if ($decal > 3600 * 24 * 30 * 6) {
387
+        return affdate_court($date);
388
+    }
389
+
390
+    if ($decal > 3600 * 24 * 30) {
391
+        $mois = floor($decal / (3600 * 24 * 30));
392
+        if ($mois < 2) {
393
+            $delai = "$mois " . _T('date_un_mois');
394
+        } else {
395
+            $delai = "$mois " . _T('date_mois');
396
+        }
397
+    } else {
398
+        if ($decal > 3600 * 24 * 7) {
399
+            $semaines = floor($decal / (3600 * 24 * 7));
400
+            if ($semaines < 2) {
401
+                $delai = "$semaines " . _T('date_une_semaine');
402
+            } else {
403
+                $delai = "$semaines " . _T('date_semaines');
404
+            }
405
+        } else {
406
+            if ($decal > 3600 * 24) {
407
+                $jours = floor($decal / (3600 * 24));
408
+                if ($jours < 2) {
409
+                    return $il_y_a == 'date_dans' ? _T('date_demain') : _T('date_hier');
410
+                } else {
411
+                    $delai = "$jours " . _T('date_jours');
412
+                }
413
+            } else {
414
+                if ($decal >= 3600) {
415
+                    $heures = floor($decal / 3600);
416
+                    if ($heures < 2) {
417
+                        $delai = "$heures " . _T('date_une_heure');
418
+                    } else {
419
+                        $delai = "$heures " . _T('date_heures');
420
+                    }
421
+                } else {
422
+                    if ($decal >= 60) {
423
+                        $minutes = floor($decal / 60);
424
+                        if ($minutes < 2) {
425
+                            $delai = "$minutes " . _T('date_une_minute');
426
+                        } else {
427
+                            $delai = "$minutes " . _T('date_minutes');
428
+                        }
429
+                    } else {
430
+                        $secondes = ceil($decal);
431
+                        if ($secondes < 2) {
432
+                            $delai = "$secondes " . _T('date_une_seconde');
433
+                        } else {
434
+                            $delai = "$secondes " . _T('date_secondes');
435
+                        }
436
+                    }
437
+                }
438
+            }
439
+        }
440
+    }
441
+
442
+    return _T($il_y_a, ['delai' => $delai]);
443 443
 }
444 444
 
445 445
 
@@ -465,32 +465,32 @@  discard block
 block discarded – undo
465 465
  **/
466 466
 function date_relativecourt($date, $decalage_maxi = 0): string {
467 467
 
468
-	if (!$date) {
469
-		return '';
470
-	}
471
-	$decal = date('U', strtotime(date('Y-m-d')) - strtotime(date('Y-m-d', strtotime($date))));
472
-
473
-	if ($decalage_maxi and ($decal > $decalage_maxi or $decal < 0)) {
474
-		return '';
475
-	}
476
-
477
-	if ($decal < -24 * 3600) {
478
-		$retour = date_relative($date, $decalage_maxi);
479
-	} elseif ($decal < 0) {
480
-		$retour = _T('date_demain');
481
-	} else {
482
-		if ($decal < (3600 * 24)) {
483
-			$retour = _T('date_aujourdhui');
484
-		} else {
485
-			if ($decal < (3600 * 24 * 2)) {
486
-				$retour = _T('date_hier');
487
-			} else {
488
-				$retour = date_relative($date, $decalage_maxi);
489
-			}
490
-		}
491
-	}
492
-
493
-	return $retour;
468
+    if (!$date) {
469
+        return '';
470
+    }
471
+    $decal = date('U', strtotime(date('Y-m-d')) - strtotime(date('Y-m-d', strtotime($date))));
472
+
473
+    if ($decalage_maxi and ($decal > $decalage_maxi or $decal < 0)) {
474
+        return '';
475
+    }
476
+
477
+    if ($decal < -24 * 3600) {
478
+        $retour = date_relative($date, $decalage_maxi);
479
+    } elseif ($decal < 0) {
480
+        $retour = _T('date_demain');
481
+    } else {
482
+        if ($decal < (3600 * 24)) {
483
+            $retour = _T('date_aujourdhui');
484
+        } else {
485
+            if ($decal < (3600 * 24 * 2)) {
486
+                $retour = _T('date_hier');
487
+            } else {
488
+                $retour = date_relative($date, $decalage_maxi);
489
+            }
490
+        }
491
+    }
492
+
493
+    return $retour;
494 494
 }
495 495
 
496 496
 /**
@@ -507,175 +507,175 @@  discard block
 block discarded – undo
507 507
  * @return string
508 508
  */
509 509
 function affdate_base($numdate, $vue, $options = []): string {
510
-	if (is_string($options)) {
511
-		$options = ['param' => $options];
512
-	}
513
-	$date_array = recup_date($numdate, false);
514
-	if (!$date_array) {
515
-		return '';
516
-	}
517
-	[$annee, $mois, $jour, $heures, $minutes, $secondes] = $date_array;
518
-
519
-	// 1er, 21st, etc.
520
-	$journum = $jour;
521
-
522
-	if ($jour == 0) {
523
-		$jour = '';
524
-		$njour = 0;
525
-	} else {
526
-		$njour = intval($jour);
527
-		if ($jourth = _T('date_jnum' . $jour)) {
528
-			$jour = $jourth;
529
-		}
530
-	}
531
-
532
-	$mois = intval($mois);
533
-	if ($mois > 0 and $mois < 13) {
534
-		/* Traiter le cas "abbr" pour les noms de mois */
535
-		$param = ((isset($options['param']) and $options['param'] === 'abbr') ? '_' . $options['param'] : '');
536
-		$nommois = _T('date_mois_' . $mois . $param);
537
-		if ($jour) {
538
-			$jourmois = _T('date_de_mois_' . $mois, ['j' => $jour, 'nommois' => $nommois]);
539
-		} else {
540
-			$jourmois = $nommois;
541
-		}
542
-	} else {
543
-		$nommois = '';
544
-		$jourmois = '';
545
-	}
546
-
547
-	if ($annee < 0) {
548
-		$annee = -$annee . ' ' . _T('date_avant_jc');
549
-		$avjc = true;
550
-	} else {
551
-		$avjc = false;
552
-	}
553
-
554
-	switch ($vue) {
555
-		case 'saison':
556
-		case 'saison_annee':
557
-			$saison = '';
558
-			if ($mois > 0) {
559
-				$saison = ($options['param'] == 'sud') ? 3 : 1;
560
-				if (($mois == 3 and $jour >= 21) or $mois > 3) {
561
-					$saison = ($options['param'] == 'sud') ? 4 : 2;
562
-				}
563
-				if (($mois == 6 and $jour >= 21) or $mois > 6) {
564
-					$saison = ($options['param'] == 'sud') ? 1 : 3;
565
-				}
566
-				if (($mois == 9 and $jour >= 21) or $mois > 9) {
567
-					$saison = ($options['param'] == 'sud') ? 2 : 4;
568
-				}
569
-				if (($mois == 12 and $jour >= 21) or $mois > 12) {
570
-					$saison = ($options['param'] == 'sud') ? 3 : 1;
571
-				}
572
-			}
573
-			if ($vue == 'saison') {
574
-				return $saison ? _T('date_saison_' . $saison) : '';
575
-			} else {
576
-				return $saison ? trim(_T(
577
-					'date_fmt_saison_annee',
578
-					['saison' => _T('date_saison_' . $saison), 'annee' => $annee]
579
-				)) : '';
580
-			}
581
-
582
-		case 'court':
583
-			if ($avjc) {
584
-				return $annee;
585
-			}
586
-			$a = ((isset($options['annee_courante']) and $options['annee_courante']) ? $options['annee_courante'] : date('Y'));
587
-			if ($annee < ($a - 100) or $annee > ($a + 100)) {
588
-				return $annee;
589
-			}
590
-			if ($annee != $a) {
591
-				return _T(
592
-					'date_fmt_mois_annee',
593
-					['mois' => $mois, 'nommois' => spip_ucfirst($nommois), 'annee' => $annee]
594
-				);
595
-			}
596
-
597
-			return _T(
598
-				'date_fmt_jour_mois',
599
-				['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
600
-			);
601
-
602
-		case 'jourcourt':
603
-			if ($avjc) {
604
-				return $annee;
605
-			}
606
-			$a = ((isset($options['annee_courante']) and $options['annee_courante']) ? $options['annee_courante'] : date('Y'));
607
-			if ($annee < ($a - 100) or $annee > ($a + 100)) {
608
-				return $annee;
609
-			}
610
-			if ($annee != $a) {
611
-				return _T(
612
-					'date_fmt_jour_mois_annee',
613
-					['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
614
-				);
615
-			}
616
-
617
-			return _T(
618
-				'date_fmt_jour_mois',
619
-				['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
620
-			);
621
-
622
-		case 'entier':
623
-			if ($avjc) {
624
-				return $annee;
625
-			}
626
-			if ($jour) {
627
-				return _T(
628
-					'date_fmt_jour_mois_annee',
629
-					['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
630
-				);
631
-			} elseif ($mois) {
632
-				return trim(_T('date_fmt_mois_annee', ['mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]));
633
-			} else {
634
-				return $annee;
635
-			}
636
-
637
-		case 'nom_mois':
638
-			return $nommois;
639
-
640
-		case 'mois':
641
-			return sprintf('%02s', $mois);
642
-
643
-		case 'jour':
644
-			return $jour;
645
-
646
-		case 'journum':
647
-			return $journum;
648
-
649
-		case 'nom_jour':
650
-			if (!$mois or !$njour) {
651
-				return '';
652
-			}
653
-			$nom = mktime(1, 1, 1, $mois, $njour, $annee);
654
-			$nom = 1 + (int) date('w', $nom);
655
-			$param = ((isset($options['param']) and $options['param']) ? '_' . $options['param'] : '');
656
-
657
-			return _T('date_jour_' . $nom . $param);
658
-
659
-		case 'mois_annee':
660
-			if ($avjc) {
661
-				return $annee;
662
-			}
663
-
664
-			return trim(_T('date_fmt_mois_annee', ['mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]));
665
-
666
-		case 'annee':
667
-			return $annee;
668
-
669
-		// Cas d'une vue non definie : retomber sur le format
670
-		// de date propose par http://www.php.net/date
671
-		default:
672
-			[$annee, $mois, $jour, $heures, $minutes, $secondes] = $date_array;
673
-			// il faut envoyer jour = 1 si jour pas défini, c'est le comportement qu'on avait historiquement en envoyant ''
674
-			if (!$time = mktime($heures, $minutes, $secondes, $mois, is_numeric($jour) ? $jour : 1 , $annee)) {
675
-				$time = strtotime($numdate);
676
-			}
677
-			return date($vue, $time);
678
-	}
510
+    if (is_string($options)) {
511
+        $options = ['param' => $options];
512
+    }
513
+    $date_array = recup_date($numdate, false);
514
+    if (!$date_array) {
515
+        return '';
516
+    }
517
+    [$annee, $mois, $jour, $heures, $minutes, $secondes] = $date_array;
518
+
519
+    // 1er, 21st, etc.
520
+    $journum = $jour;
521
+
522
+    if ($jour == 0) {
523
+        $jour = '';
524
+        $njour = 0;
525
+    } else {
526
+        $njour = intval($jour);
527
+        if ($jourth = _T('date_jnum' . $jour)) {
528
+            $jour = $jourth;
529
+        }
530
+    }
531
+
532
+    $mois = intval($mois);
533
+    if ($mois > 0 and $mois < 13) {
534
+        /* Traiter le cas "abbr" pour les noms de mois */
535
+        $param = ((isset($options['param']) and $options['param'] === 'abbr') ? '_' . $options['param'] : '');
536
+        $nommois = _T('date_mois_' . $mois . $param);
537
+        if ($jour) {
538
+            $jourmois = _T('date_de_mois_' . $mois, ['j' => $jour, 'nommois' => $nommois]);
539
+        } else {
540
+            $jourmois = $nommois;
541
+        }
542
+    } else {
543
+        $nommois = '';
544
+        $jourmois = '';
545
+    }
546
+
547
+    if ($annee < 0) {
548
+        $annee = -$annee . ' ' . _T('date_avant_jc');
549
+        $avjc = true;
550
+    } else {
551
+        $avjc = false;
552
+    }
553
+
554
+    switch ($vue) {
555
+        case 'saison':
556
+        case 'saison_annee':
557
+            $saison = '';
558
+            if ($mois > 0) {
559
+                $saison = ($options['param'] == 'sud') ? 3 : 1;
560
+                if (($mois == 3 and $jour >= 21) or $mois > 3) {
561
+                    $saison = ($options['param'] == 'sud') ? 4 : 2;
562
+                }
563
+                if (($mois == 6 and $jour >= 21) or $mois > 6) {
564
+                    $saison = ($options['param'] == 'sud') ? 1 : 3;
565
+                }
566
+                if (($mois == 9 and $jour >= 21) or $mois > 9) {
567
+                    $saison = ($options['param'] == 'sud') ? 2 : 4;
568
+                }
569
+                if (($mois == 12 and $jour >= 21) or $mois > 12) {
570
+                    $saison = ($options['param'] == 'sud') ? 3 : 1;
571
+                }
572
+            }
573
+            if ($vue == 'saison') {
574
+                return $saison ? _T('date_saison_' . $saison) : '';
575
+            } else {
576
+                return $saison ? trim(_T(
577
+                    'date_fmt_saison_annee',
578
+                    ['saison' => _T('date_saison_' . $saison), 'annee' => $annee]
579
+                )) : '';
580
+            }
581
+
582
+        case 'court':
583
+            if ($avjc) {
584
+                return $annee;
585
+            }
586
+            $a = ((isset($options['annee_courante']) and $options['annee_courante']) ? $options['annee_courante'] : date('Y'));
587
+            if ($annee < ($a - 100) or $annee > ($a + 100)) {
588
+                return $annee;
589
+            }
590
+            if ($annee != $a) {
591
+                return _T(
592
+                    'date_fmt_mois_annee',
593
+                    ['mois' => $mois, 'nommois' => spip_ucfirst($nommois), 'annee' => $annee]
594
+                );
595
+            }
596
+
597
+            return _T(
598
+                'date_fmt_jour_mois',
599
+                ['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
600
+            );
601
+
602
+        case 'jourcourt':
603
+            if ($avjc) {
604
+                return $annee;
605
+            }
606
+            $a = ((isset($options['annee_courante']) and $options['annee_courante']) ? $options['annee_courante'] : date('Y'));
607
+            if ($annee < ($a - 100) or $annee > ($a + 100)) {
608
+                return $annee;
609
+            }
610
+            if ($annee != $a) {
611
+                return _T(
612
+                    'date_fmt_jour_mois_annee',
613
+                    ['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
614
+                );
615
+            }
616
+
617
+            return _T(
618
+                'date_fmt_jour_mois',
619
+                ['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
620
+            );
621
+
622
+        case 'entier':
623
+            if ($avjc) {
624
+                return $annee;
625
+            }
626
+            if ($jour) {
627
+                return _T(
628
+                    'date_fmt_jour_mois_annee',
629
+                    ['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
630
+                );
631
+            } elseif ($mois) {
632
+                return trim(_T('date_fmt_mois_annee', ['mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]));
633
+            } else {
634
+                return $annee;
635
+            }
636
+
637
+        case 'nom_mois':
638
+            return $nommois;
639
+
640
+        case 'mois':
641
+            return sprintf('%02s', $mois);
642
+
643
+        case 'jour':
644
+            return $jour;
645
+
646
+        case 'journum':
647
+            return $journum;
648
+
649
+        case 'nom_jour':
650
+            if (!$mois or !$njour) {
651
+                return '';
652
+            }
653
+            $nom = mktime(1, 1, 1, $mois, $njour, $annee);
654
+            $nom = 1 + (int) date('w', $nom);
655
+            $param = ((isset($options['param']) and $options['param']) ? '_' . $options['param'] : '');
656
+
657
+            return _T('date_jour_' . $nom . $param);
658
+
659
+        case 'mois_annee':
660
+            if ($avjc) {
661
+                return $annee;
662
+            }
663
+
664
+            return trim(_T('date_fmt_mois_annee', ['mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]));
665
+
666
+        case 'annee':
667
+            return $annee;
668
+
669
+        // Cas d'une vue non definie : retomber sur le format
670
+        // de date propose par http://www.php.net/date
671
+        default:
672
+            [$annee, $mois, $jour, $heures, $minutes, $secondes] = $date_array;
673
+            // il faut envoyer jour = 1 si jour pas défini, c'est le comportement qu'on avait historiquement en envoyant ''
674
+            if (!$time = mktime($heures, $minutes, $secondes, $mois, is_numeric($jour) ? $jour : 1 , $annee)) {
675
+                $time = strtotime($numdate);
676
+            }
677
+            return date($vue, $time);
678
+    }
679 679
 }
680 680
 
681 681
 
@@ -702,11 +702,11 @@  discard block
 block discarded – undo
702 702
  *     Nom du jour
703 703
  **/
704 704
 function nom_jour($numdate, $forme = ''): string {
705
-	if (!($forme === 'abbr' or $forme === 'initiale')) {
706
-		$forme = '';
707
-	}
705
+    if (!($forme === 'abbr' or $forme === 'initiale')) {
706
+        $forme = '';
707
+    }
708 708
 
709
-	return affdate_base($numdate, 'nom_jour', ['param' => $forme]);
709
+    return affdate_base($numdate, 'nom_jour', ['param' => $forme]);
710 710
 }
711 711
 
712 712
 /**
@@ -728,7 +728,7 @@  discard block
 block discarded – undo
728 728
  *     Numéro du jour
729 729
  **/
730 730
 function jour($numdate): string {
731
-	return affdate_base($numdate, 'jour');
731
+    return affdate_base($numdate, 'jour');
732 732
 }
733 733
 
734 734
 /**
@@ -746,7 +746,7 @@  discard block
 block discarded – undo
746 746
  *     Numéro du jour
747 747
  **/
748 748
 function journum($numdate): string {
749
-	return affdate_base($numdate, 'journum');
749
+    return affdate_base($numdate, 'journum');
750 750
 }
751 751
 
752 752
 /**
@@ -764,7 +764,7 @@  discard block
 block discarded – undo
764 764
  *     Numéro du mois (sur 2 chiffres)
765 765
  **/
766 766
 function mois($numdate): string {
767
-	return  affdate_base($numdate, 'mois');
767
+    return  affdate_base($numdate, 'mois');
768 768
 }
769 769
 
770 770
 /**
@@ -788,11 +788,11 @@  discard block
 block discarded – undo
788 788
  *     Nom du mois
789 789
  **/
790 790
 function nom_mois($numdate, $forme = ''): string {
791
-	if (!($forme === 'abbr')) {
792
-		$forme = '';
793
-	}
791
+    if (!($forme === 'abbr')) {
792
+        $forme = '';
793
+    }
794 794
 
795
-	return affdate_base($numdate, 'nom_mois', ['param' => $forme]);
795
+    return affdate_base($numdate, 'nom_mois', ['param' => $forme]);
796 796
 }
797 797
 
798 798
 /**
@@ -810,7 +810,7 @@  discard block
 block discarded – undo
810 810
  *     Année (sur 4 chiffres)
811 811
  **/
812 812
 function annee($numdate): string {
813
-	return affdate_base($numdate, 'annee');
813
+    return affdate_base($numdate, 'annee');
814 814
 }
815 815
 
816 816
 
@@ -840,11 +840,11 @@  discard block
 block discarded – undo
840 840
  *     La date formatée
841 841
  **/
842 842
 function saison($numdate, $hemisphere = 'nord'): string {
843
-	if ($hemisphere !== 'sud') {
844
-		$hemisphere = 'nord';
845
-	}
843
+    if ($hemisphere !== 'sud') {
844
+        $hemisphere = 'nord';
845
+    }
846 846
 
847
-	return affdate_base($numdate, 'saison', ['param' => $hemisphere]);
847
+    return affdate_base($numdate, 'saison', ['param' => $hemisphere]);
848 848
 }
849 849
 
850 850
 
@@ -873,11 +873,11 @@  discard block
 block discarded – undo
873 873
  *     La date formatée
874 874
  **/
875 875
 function saison_annee($numdate, $hemisphere = 'nord'): string {
876
-	if ($hemisphere !== 'sud') {
877
-		$hemisphere = 'nord';
878
-	}
876
+    if ($hemisphere !== 'sud') {
877
+        $hemisphere = 'nord';
878
+    }
879 879
 
880
-	return affdate_base($numdate, 'saison_annee', ['param' => $hemisphere]);
880
+    return affdate_base($numdate, 'saison_annee', ['param' => $hemisphere]);
881 881
 }
882 882
 
883 883
 /**
@@ -905,7 +905,7 @@  discard block
 block discarded – undo
905 905
  *     La date formatée
906 906
  **/
907 907
 function affdate($numdate, $format = 'entier'): string {
908
-	return affdate_base($numdate, $format);
908
+    return affdate_base($numdate, $format);
909 909
 }
910 910
 
911 911
 
@@ -932,7 +932,7 @@  discard block
 block discarded – undo
932 932
  *     La date formatée
933 933
  **/
934 934
 function affdate_court($numdate, $annee_courante = null): string {
935
-	return affdate_base($numdate, 'court', ['annee_courante' => $annee_courante]);
935
+    return affdate_base($numdate, 'court', ['annee_courante' => $annee_courante]);
936 936
 }
937 937
 
938 938
 
@@ -959,7 +959,7 @@  discard block
 block discarded – undo
959 959
  *     La date formatée
960 960
  **/
961 961
 function affdate_jourcourt($numdate, $annee_courante = null): string {
962
-	return affdate_base($numdate, 'jourcourt', ['annee_courante' => $annee_courante]);
962
+    return affdate_base($numdate, 'jourcourt', ['annee_courante' => $annee_courante]);
963 963
 }
964 964
 
965 965
 /**
@@ -977,7 +977,7 @@  discard block
 block discarded – undo
977 977
  *     La date formatée
978 978
  **/
979 979
 function affdate_mois_annee($numdate): string {
980
-	return affdate_base($numdate, 'mois_annee');
980
+    return affdate_base($numdate, 'mois_annee');
981 981
 }
982 982
 
983 983
 /**
@@ -995,16 +995,16 @@  discard block
 block discarded – undo
995 995
  *     La date formatée, sinon ''
996 996
  **/
997 997
 function affdate_heure($numdate): string {
998
-	$date_array = recup_date($numdate);
999
-	if (!$date_array) {
1000
-		return '';
1001
-	}
1002
-	[$annee, $mois, $jour, $heures, $minutes, $sec] = $date_array;
1003
-
1004
-	return _T('date_fmt_jour_heure', [
1005
-		'jour' => affdate($numdate),
1006
-		'heure' => _T('date_fmt_heures_minutes', ['h' => $heures, 'm' => $minutes])
1007
-	]);
998
+    $date_array = recup_date($numdate);
999
+    if (!$date_array) {
1000
+        return '';
1001
+    }
1002
+    [$annee, $mois, $jour, $heures, $minutes, $sec] = $date_array;
1003
+
1004
+    return _T('date_fmt_jour_heure', [
1005
+        'jour' => affdate($numdate),
1006
+        'heure' => _T('date_fmt_heures_minutes', ['h' => $heures, 'm' => $minutes])
1007
+    ]);
1008 1008
 }
1009 1009
 
1010 1010
 /**
@@ -1036,117 +1036,117 @@  discard block
 block discarded – undo
1036 1036
  *     texte de la date
1037 1037
  */
1038 1038
 function affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui', $forme = ''): string {
1039
-	$abbr = $jour = '';
1040
-	$affdate = 'affdate_jourcourt';
1041
-	if (strpos($forme, 'abbr') !== false) {
1042
-		$abbr = 'abbr';
1043
-	}
1044
-	if (strpos($forme, 'annee') !== false) {
1045
-		$affdate = 'affdate';
1046
-	}
1047
-	if (strpos($forme, 'jour') !== false) {
1048
-		$jour = 'jour';
1049
-	}
1050
-
1051
-	$dtstart = $dtend = $dtabbr = '';
1052
-	if (strpos($forme, 'hcal') !== false) {
1053
-		$dtstart = "<abbr class='dtstart' title='" . date_iso($date_debut) . "'>";
1054
-		$dtend = "<abbr class='dtend' title='" . date_iso($date_fin) . "'>";
1055
-		$dtabbr = '</abbr>';
1056
-	}
1057
-
1058
-	$date_debut = strtotime($date_debut);
1059
-	$date_fin = strtotime($date_fin);
1060
-	$d = date('Y-m-d', $date_debut);
1061
-	$f = date('Y-m-d', $date_fin);
1062
-	$h = ($horaire === 'oui' or $horaire === true);
1063
-	$hd = _T('date_fmt_heures_minutes_court', ['h' => date('H', $date_debut), 'm' => date('i', $date_debut)]);
1064
-	$hf = _T('date_fmt_heures_minutes_court', ['h' => date('H', $date_fin), 'm' => date('i', $date_fin)]);
1065
-
1066
-	if ($d == $f) { // meme jour
1067
-		$nomjour = nom_jour($d, $abbr);
1068
-		$s = $affdate($d);
1069
-		$s = _T('date_fmt_jour', ['nomjour' => $nomjour, 'jour' => $s]);
1070
-		if ($h) {
1071
-			if ($hd == $hf) {
1072
-				// Lundi 20 fevrier a 18h25
1073
-				$s = spip_ucfirst(_T('date_fmt_jour_heure', ['jour' => $s, 'heure' => $hd]));
1074
-				$s = "$dtstart$s$dtabbr";
1075
-			} else {
1076
-				// Le <abbr...>lundi 20 fevrier de 18h00</abbr> a <abbr...>20h00</abbr>
1077
-				if ($dtabbr && $dtstart && $dtend) {
1078
-					$s = _T(
1079
-						'date_fmt_jour_heure_debut_fin_abbr',
1080
-						[
1081
-						'jour' => spip_ucfirst($s),
1082
-						'heure_debut' => $hd,
1083
-						'heure_fin' => $hf,
1084
-						'dtstart' => $dtstart,
1085
-						'dtend' => $dtend,
1086
-						'dtabbr' => $dtabbr
1087
-						],
1088
-						[
1089
-							'sanitize' => false
1090
-						]
1091
-					);
1092
-				} // Le lundi 20 fevrier de 18h00 a 20h00
1093
-				else {
1094
-					$s = spip_ucfirst(_T(
1095
-						'date_fmt_jour_heure_debut_fin',
1096
-						['jour' => $s, 'heure_debut' => $hd, 'heure_fin' => $hf]
1097
-					));
1098
-				}
1099
-			}
1100
-		} else {
1101
-			if ($dtabbr && $dtstart) {
1102
-				$s = $dtstart . spip_ucfirst($s) . $dtabbr;
1103
-			} else {
1104
-				$s = spip_ucfirst($s);
1105
-			}
1106
-		}
1107
-	} else {
1108
-		if ((date('Y-m', $date_debut)) == date('Y-m', $date_fin)) { // meme annee et mois, jours differents
1109
-			if (!$h) {
1110
-				$date_debut = jour($d);
1111
-			} else {
1112
-				$date_debut = affdate_jourcourt($d, date('Y', $date_fin));
1113
-			}
1114
-			$date_fin = $affdate($f);
1115
-			if ($jour) {
1116
-				$nomjour_debut = nom_jour($d, $abbr);
1117
-				$date_debut = _T('date_fmt_jour', ['nomjour' => $nomjour_debut, 'jour' => $date_debut]);
1118
-				$nomjour_fin = nom_jour($f, $abbr);
1119
-				$date_fin = _T('date_fmt_jour', ['nomjour' => $nomjour_fin, 'jour' => $date_fin]);
1120
-			}
1121
-			if ($h) {
1122
-				$date_debut = _T('date_fmt_jour_heure', ['jour' => $date_debut, 'heure' => $hd]);
1123
-				$date_fin = _T('date_fmt_jour_heure', ['jour' => $date_fin, 'heure' => $hf]);
1124
-			}
1125
-			$date_debut = $dtstart . $date_debut . $dtabbr;
1126
-			$date_fin = $dtend . $date_fin . $dtabbr;
1127
-
1128
-			$s = _T('date_fmt_periode', ['date_debut' => $date_debut, 'date_fin' => $date_fin]);
1129
-		} else {
1130
-			$date_debut = affdate_jourcourt($d, date('Y', $date_fin));
1131
-			$date_fin = $affdate($f);
1132
-			if ($jour) {
1133
-				$nomjour_debut = nom_jour($d, $abbr);
1134
-				$date_debut = _T('date_fmt_jour', ['nomjour' => $nomjour_debut, 'jour' => $date_debut]);
1135
-				$nomjour_fin = nom_jour($f, $abbr);
1136
-				$date_fin = _T('date_fmt_jour', ['nomjour' => $nomjour_fin, 'jour' => $date_fin]);
1137
-			}
1138
-			if ($h) {
1139
-				$date_debut = _T('date_fmt_jour_heure', ['jour' => $date_debut, 'heure' => $hd]);
1140
-				$date_fin = _T('date_fmt_jour_heure', ['jour' => $date_fin, 'heure' => $hf]);
1141
-			}
1142
-
1143
-			$date_debut = $dtstart . $date_debut . $dtabbr;
1144
-			$date_fin = $dtend . $date_fin . $dtabbr;
1145
-			$s = _T('date_fmt_periode', ['date_debut' => $date_debut, 'date_fin' => $date_fin]);
1146
-		}
1147
-	}
1148
-
1149
-	return $s;
1039
+    $abbr = $jour = '';
1040
+    $affdate = 'affdate_jourcourt';
1041
+    if (strpos($forme, 'abbr') !== false) {
1042
+        $abbr = 'abbr';
1043
+    }
1044
+    if (strpos($forme, 'annee') !== false) {
1045
+        $affdate = 'affdate';
1046
+    }
1047
+    if (strpos($forme, 'jour') !== false) {
1048
+        $jour = 'jour';
1049
+    }
1050
+
1051
+    $dtstart = $dtend = $dtabbr = '';
1052
+    if (strpos($forme, 'hcal') !== false) {
1053
+        $dtstart = "<abbr class='dtstart' title='" . date_iso($date_debut) . "'>";
1054
+        $dtend = "<abbr class='dtend' title='" . date_iso($date_fin) . "'>";
1055
+        $dtabbr = '</abbr>';
1056
+    }
1057
+
1058
+    $date_debut = strtotime($date_debut);
1059
+    $date_fin = strtotime($date_fin);
1060
+    $d = date('Y-m-d', $date_debut);
1061
+    $f = date('Y-m-d', $date_fin);
1062
+    $h = ($horaire === 'oui' or $horaire === true);
1063
+    $hd = _T('date_fmt_heures_minutes_court', ['h' => date('H', $date_debut), 'm' => date('i', $date_debut)]);
1064
+    $hf = _T('date_fmt_heures_minutes_court', ['h' => date('H', $date_fin), 'm' => date('i', $date_fin)]);
1065
+
1066
+    if ($d == $f) { // meme jour
1067
+        $nomjour = nom_jour($d, $abbr);
1068
+        $s = $affdate($d);
1069
+        $s = _T('date_fmt_jour', ['nomjour' => $nomjour, 'jour' => $s]);
1070
+        if ($h) {
1071
+            if ($hd == $hf) {
1072
+                // Lundi 20 fevrier a 18h25
1073
+                $s = spip_ucfirst(_T('date_fmt_jour_heure', ['jour' => $s, 'heure' => $hd]));
1074
+                $s = "$dtstart$s$dtabbr";
1075
+            } else {
1076
+                // Le <abbr...>lundi 20 fevrier de 18h00</abbr> a <abbr...>20h00</abbr>
1077
+                if ($dtabbr && $dtstart && $dtend) {
1078
+                    $s = _T(
1079
+                        'date_fmt_jour_heure_debut_fin_abbr',
1080
+                        [
1081
+                        'jour' => spip_ucfirst($s),
1082
+                        'heure_debut' => $hd,
1083
+                        'heure_fin' => $hf,
1084
+                        'dtstart' => $dtstart,
1085
+                        'dtend' => $dtend,
1086
+                        'dtabbr' => $dtabbr
1087
+                        ],
1088
+                        [
1089
+                            'sanitize' => false
1090
+                        ]
1091
+                    );
1092
+                } // Le lundi 20 fevrier de 18h00 a 20h00
1093
+                else {
1094
+                    $s = spip_ucfirst(_T(
1095
+                        'date_fmt_jour_heure_debut_fin',
1096
+                        ['jour' => $s, 'heure_debut' => $hd, 'heure_fin' => $hf]
1097
+                    ));
1098
+                }
1099
+            }
1100
+        } else {
1101
+            if ($dtabbr && $dtstart) {
1102
+                $s = $dtstart . spip_ucfirst($s) . $dtabbr;
1103
+            } else {
1104
+                $s = spip_ucfirst($s);
1105
+            }
1106
+        }
1107
+    } else {
1108
+        if ((date('Y-m', $date_debut)) == date('Y-m', $date_fin)) { // meme annee et mois, jours differents
1109
+            if (!$h) {
1110
+                $date_debut = jour($d);
1111
+            } else {
1112
+                $date_debut = affdate_jourcourt($d, date('Y', $date_fin));
1113
+            }
1114
+            $date_fin = $affdate($f);
1115
+            if ($jour) {
1116
+                $nomjour_debut = nom_jour($d, $abbr);
1117
+                $date_debut = _T('date_fmt_jour', ['nomjour' => $nomjour_debut, 'jour' => $date_debut]);
1118
+                $nomjour_fin = nom_jour($f, $abbr);
1119
+                $date_fin = _T('date_fmt_jour', ['nomjour' => $nomjour_fin, 'jour' => $date_fin]);
1120
+            }
1121
+            if ($h) {
1122
+                $date_debut = _T('date_fmt_jour_heure', ['jour' => $date_debut, 'heure' => $hd]);
1123
+                $date_fin = _T('date_fmt_jour_heure', ['jour' => $date_fin, 'heure' => $hf]);
1124
+            }
1125
+            $date_debut = $dtstart . $date_debut . $dtabbr;
1126
+            $date_fin = $dtend . $date_fin . $dtabbr;
1127
+
1128
+            $s = _T('date_fmt_periode', ['date_debut' => $date_debut, 'date_fin' => $date_fin]);
1129
+        } else {
1130
+            $date_debut = affdate_jourcourt($d, date('Y', $date_fin));
1131
+            $date_fin = $affdate($f);
1132
+            if ($jour) {
1133
+                $nomjour_debut = nom_jour($d, $abbr);
1134
+                $date_debut = _T('date_fmt_jour', ['nomjour' => $nomjour_debut, 'jour' => $date_debut]);
1135
+                $nomjour_fin = nom_jour($f, $abbr);
1136
+                $date_fin = _T('date_fmt_jour', ['nomjour' => $nomjour_fin, 'jour' => $date_fin]);
1137
+            }
1138
+            if ($h) {
1139
+                $date_debut = _T('date_fmt_jour_heure', ['jour' => $date_debut, 'heure' => $hd]);
1140
+                $date_fin = _T('date_fmt_jour_heure', ['jour' => $date_fin, 'heure' => $hf]);
1141
+            }
1142
+
1143
+            $date_debut = $dtstart . $date_debut . $dtabbr;
1144
+            $date_fin = $dtend . $date_fin . $dtabbr;
1145
+            $s = _T('date_fmt_periode', ['date_debut' => $date_debut, 'date_fin' => $date_fin]);
1146
+        }
1147
+    }
1148
+
1149
+    return $s;
1150 1150
 }
1151 1151
 
1152 1152
 /**
@@ -1167,10 +1167,10 @@  discard block
 block discarded – undo
1167 1167
  *     Date au format ical
1168 1168
  **/
1169 1169
 function date_ical($date, $addminutes = 0): string {
1170
-	[$heures, $minutes, $secondes] = recup_heure($date);
1171
-	[$annee, $mois, $jour] = recup_date($date);
1170
+    [$heures, $minutes, $secondes] = recup_heure($date);
1171
+    [$annee, $mois, $jour] = recup_date($date);
1172 1172
 
1173
-	return gmdate('Ymd\THis\Z', mktime($heures, $minutes + $addminutes, $secondes, $mois, $jour, $annee));
1173
+    return gmdate('Ymd\THis\Z', mktime($heures, $minutes + $addminutes, $secondes, $mois, $jour, $annee));
1174 1174
 }
1175 1175
 
1176 1176
 
@@ -1194,14 +1194,14 @@  discard block
 block discarded – undo
1194 1194
  *     La date formatée
1195 1195
  **/
1196 1196
 function date_iso($date_heure): string {
1197
-	$date = recup_date($date_heure);
1198
-	$annee = $date[0] ?? null;
1199
-	$mois = $date[1] ?? null;
1200
-	$jour = $date[2] ?? null;
1201
-	[$heures, $minutes, $secondes] = recup_heure($date_heure);
1202
-	$time = @mktime($heures, $minutes, $secondes, $mois, $jour, $annee);
1203
-
1204
-	return gmdate('Y-m-d\TH:i:s\Z', $time);
1197
+    $date = recup_date($date_heure);
1198
+    $annee = $date[0] ?? null;
1199
+    $mois = $date[1] ?? null;
1200
+    $jour = $date[2] ?? null;
1201
+    [$heures, $minutes, $secondes] = recup_heure($date_heure);
1202
+    $time = @mktime($heures, $minutes, $secondes, $mois, $jour, $annee);
1203
+
1204
+    return gmdate('Y-m-d\TH:i:s\Z', $time);
1205 1205
 }
1206 1206
 
1207 1207
 /**
@@ -1224,11 +1224,11 @@  discard block
 block discarded – undo
1224 1224
  *     La date formatée
1225 1225
  **/
1226 1226
 function date_822($date_heure): string {
1227
-	[$annee, $mois, $jour] = recup_date($date_heure);
1228
-	[$heures, $minutes, $secondes] = recup_heure($date_heure);
1229
-	$time = mktime($heures, $minutes, $secondes, $mois, $jour, $annee);
1227
+    [$annee, $mois, $jour] = recup_date($date_heure);
1228
+    [$heures, $minutes, $secondes] = recup_heure($date_heure);
1229
+    $time = mktime($heures, $minutes, $secondes, $mois, $jour, $annee);
1230 1230
 
1231
-	return date('r', $time);
1231
+    return date('r', $time);
1232 1232
 }
1233 1233
 
1234 1234
 /**
@@ -1244,11 +1244,11 @@  discard block
 block discarded – undo
1244 1244
  *     Date au format `Ymd`
1245 1245
  **/
1246 1246
 function date_anneemoisjour($d): string {
1247
-	if (!$d) {
1248
-		$d = date('Y-m-d');
1249
-	}
1247
+    if (!$d) {
1248
+        $d = date('Y-m-d');
1249
+    }
1250 1250
 
1251
-	return substr($d, 0, 4) . substr($d, 5, 2) . substr($d, 8, 2);
1251
+    return substr($d, 0, 4) . substr($d, 5, 2) . substr($d, 8, 2);
1252 1252
 }
1253 1253
 
1254 1254
 /**
@@ -1264,11 +1264,11 @@  discard block
 block discarded – undo
1264 1264
  *     Date au format `Ym`
1265 1265
  **/
1266 1266
 function date_anneemois($d): string {
1267
-	if (!$d) {
1268
-		$d = date('Y-m-d');
1269
-	}
1267
+    if (!$d) {
1268
+        $d = date('Y-m-d');
1269
+    }
1270 1270
 
1271
-	return substr($d, 0, 4) . substr($d, 5, 2);
1271
+    return substr($d, 0, 4) . substr($d, 5, 2);
1272 1272
 }
1273 1273
 
1274 1274
 /**
@@ -1284,13 +1284,13 @@  discard block
 block discarded – undo
1284 1284
  *     Date au lundi de la même semaine au format `Ymd`
1285 1285
  **/
1286 1286
 function date_debut_semaine($annee, $mois, $jour): string {
1287
-	$w_day = date('w', mktime(0, 0, 0, $mois, $jour, $annee));
1288
-	if ($w_day == 0) {
1289
-		$w_day = 7;
1290
-	} // Gaffe: le dimanche est zero
1291
-	$debut = $jour - $w_day + 1;
1287
+    $w_day = date('w', mktime(0, 0, 0, $mois, $jour, $annee));
1288
+    if ($w_day == 0) {
1289
+        $w_day = 7;
1290
+    } // Gaffe: le dimanche est zero
1291
+    $debut = $jour - $w_day + 1;
1292 1292
 
1293
-	return date('Ymd', mktime(0, 0, 0, $mois, $debut, $annee));
1293
+    return date('Ymd', mktime(0, 0, 0, $mois, $debut, $annee));
1294 1294
 }
1295 1295
 
1296 1296
 /**
@@ -1306,11 +1306,11 @@  discard block
 block discarded – undo
1306 1306
  *     Date au dimanche de la même semaine au format `Ymd`
1307 1307
  **/
1308 1308
 function date_fin_semaine($annee, $mois, $jour): string {
1309
-	$w_day = date('w', mktime(0, 0, 0, $mois, $jour, $annee));
1310
-	if ($w_day == 0) {
1311
-		$w_day = 7;
1312
-	} // Gaffe: le dimanche est zero
1313
-	$debut = $jour - $w_day + 1;
1309
+    $w_day = date('w', mktime(0, 0, 0, $mois, $jour, $annee));
1310
+    if ($w_day == 0) {
1311
+        $w_day = 7;
1312
+    } // Gaffe: le dimanche est zero
1313
+    $debut = $jour - $w_day + 1;
1314 1314
 
1315
-	return date('Ymd', mktime(0, 0, 0, $mois, $debut + 6, $annee));
1315
+    return date('Ymd', mktime(0, 0, 0, $mois, $debut + 6, $annee));
1316 1316
 }
Please login to merge, or discard this patch.