summaryrefslogtreecommitdiff
path: root/app/Functions/FunctionsDate.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Functions/FunctionsDate.php')
-rw-r--r--app/Functions/FunctionsDate.php204
1 files changed, 104 insertions, 100 deletions
diff --git a/app/Functions/FunctionsDate.php b/app/Functions/FunctionsDate.php
index e46804a4fb..f317cf0f74 100644
--- a/app/Functions/FunctionsDate.php
+++ b/app/Functions/FunctionsDate.php
@@ -21,107 +21,111 @@ use Fisharebest\Webtrees\I18N;
/**
* Class FunctionsDate - common functions
*/
-class FunctionsDate {
- /**
- * Convert a GEDCOM age string to localized text.
- *
- * @param string $age_string
- *
- * @return string
- */
- public static function getAgeAtEvent($age_string) {
- switch (strtoupper($age_string)) {
- case 'CHILD':
- return I18N::translate('Child');
- case 'INFANT':
- return I18N::translate('Infant');
- case 'STILLBORN':
- return I18N::translate('Stillborn');
- default:
- return preg_replace_callback(
- [
- '/(\d+)([ymwd])/',
- ],
- function ($match) {
- switch ($match[2]) {
- case 'y':
- return I18N::plural('%s year', '%s years', $match[1], I18N::digits($match[1]));
- case 'm':
- return I18N::plural('%s month', '%s months', $match[1], I18N::digits($match[1]));
- case 'w':
- return I18N::plural('%s week', '%s weeks', $match[1], I18N::digits($match[1]));
- case 'd':
- return I18N::plural('%s day', '%s days', $match[1], I18N::digits($match[1]));
- }
- },
- $age_string
- );
- }
- }
+class FunctionsDate
+{
+ /**
+ * Convert a GEDCOM age string to localized text.
+ *
+ * @param string $age_string
+ *
+ * @return string
+ */
+ public static function getAgeAtEvent($age_string)
+ {
+ switch (strtoupper($age_string)) {
+ case 'CHILD':
+ return I18N::translate('Child');
+ case 'INFANT':
+ return I18N::translate('Infant');
+ case 'STILLBORN':
+ return I18N::translate('Stillborn');
+ default:
+ return preg_replace_callback(
+ [
+ '/(\d+)([ymwd])/',
+ ],
+ function ($match) {
+ switch ($match[2]) {
+ case 'y':
+ return I18N::plural('%s year', '%s years', $match[1], I18N::digits($match[1]));
+ case 'm':
+ return I18N::plural('%s month', '%s months', $match[1], I18N::digits($match[1]));
+ case 'w':
+ return I18N::plural('%s week', '%s weeks', $match[1], I18N::digits($match[1]));
+ case 'd':
+ return I18N::plural('%s day', '%s days', $match[1], I18N::digits($match[1]));
+ }
+ },
+ $age_string
+ );
+ }
+ }
- /**
- * Convert a unix timestamp into a formatted date-time value, for logs, etc.
- * Don't attempt to convert into other calendars, as not all days start at
- * midnight, and we can only get it wrong.
- *
- * @param int $time
- *
- * @return string
- */
- public static function formatTimestamp($time) {
- $time_fmt = I18N::timeFormat();
- // PHP::date() doesn't do I18N. Do it ourselves....
- preg_match_all('/%[^%]/', $time_fmt, $matches);
- foreach ($matches[0] as $match) {
- switch ($match) {
- case '%a':
- $t = gmdate('His', $time);
- if ($t == '000000') {
- $time_fmt = str_replace($match, /* I18N: time format “%a” - exactly 00:00:00 */
- I18N::translate('midnight'), $time_fmt);
- } elseif ($t < '120000') {
- $time_fmt = str_replace($match, /* I18N: time format “%a” - between 00:00:01 and 11:59:59 */
- I18N::translate('a.m.'), $time_fmt);
- } elseif ($t == '120000') {
- $time_fmt = str_replace($match, /* I18N: time format “%a” - exactly 12:00:00 */
- I18N::translate('noon'), $time_fmt);
- } else {
- $time_fmt = str_replace($match, /* I18N: time format “%a” - between 12:00:01 and 23:59:59 */
- I18N::translate('p.m.'), $time_fmt);
- }
- break;
- case '%A':
- $t = gmdate('His', $time);
- if ($t == '000000') {
- $time_fmt = str_replace($match, /* I18N: time format “%A” - exactly 00:00:00 */
- I18N::translate('Midnight'), $time_fmt);
- } elseif ($t < '120000') {
- $time_fmt = str_replace($match, /* I18N: time format “%A” - between 00:00:01 and 11:59:59 */
- I18N::translate('A.M.'), $time_fmt);
- } elseif ($t == '120000') {
- $time_fmt = str_replace($match, /* I18N: time format “%A” - exactly 12:00:00 */
- I18N::translate('Noon'), $time_fmt);
- } else {
- $time_fmt = str_replace($match, /* I18N: time format “%A” - between 12:00:01 and 23:59:59 */
- I18N::translate('P.M.'), $time_fmt);
- }
- break;
- default:
- $time_fmt = str_replace($match, I18N::digits(gmdate(substr($match, -1), $time)), $time_fmt);
- }
- }
+ /**
+ * Convert a unix timestamp into a formatted date-time value, for logs, etc.
+ * Don't attempt to convert into other calendars, as not all days start at
+ * midnight, and we can only get it wrong.
+ *
+ * @param int $time
+ *
+ * @return string
+ */
+ public static function formatTimestamp($time)
+ {
+ $time_fmt = I18N::timeFormat();
+ // PHP::date() doesn't do I18N. Do it ourselves....
+ preg_match_all('/%[^%]/', $time_fmt, $matches);
+ foreach ($matches[0] as $match) {
+ switch ($match) {
+ case '%a':
+ $t = gmdate('His', $time);
+ if ($t == '000000') {
+ $time_fmt = str_replace($match, /* I18N: time format “%a” - exactly 00:00:00 */
+ I18N::translate('midnight'), $time_fmt);
+ } elseif ($t < '120000') {
+ $time_fmt = str_replace($match, /* I18N: time format “%a” - between 00:00:01 and 11:59:59 */
+ I18N::translate('a.m.'), $time_fmt);
+ } elseif ($t == '120000') {
+ $time_fmt = str_replace($match, /* I18N: time format “%a” - exactly 12:00:00 */
+ I18N::translate('noon'), $time_fmt);
+ } else {
+ $time_fmt = str_replace($match, /* I18N: time format “%a” - between 12:00:01 and 23:59:59 */
+ I18N::translate('p.m.'), $time_fmt);
+ }
+ break;
+ case '%A':
+ $t = gmdate('His', $time);
+ if ($t == '000000') {
+ $time_fmt = str_replace($match, /* I18N: time format “%A” - exactly 00:00:00 */
+ I18N::translate('Midnight'), $time_fmt);
+ } elseif ($t < '120000') {
+ $time_fmt = str_replace($match, /* I18N: time format “%A” - between 00:00:01 and 11:59:59 */
+ I18N::translate('A.M.'), $time_fmt);
+ } elseif ($t == '120000') {
+ $time_fmt = str_replace($match, /* I18N: time format “%A” - exactly 12:00:00 */
+ I18N::translate('Noon'), $time_fmt);
+ } else {
+ $time_fmt = str_replace($match, /* I18N: time format “%A” - between 12:00:01 and 23:59:59 */
+ I18N::translate('P.M.'), $time_fmt);
+ }
+ break;
+ default:
+ $time_fmt = str_replace($match, I18N::digits(gmdate(substr($match, -1), $time)), $time_fmt);
+ }
+ }
- return self::timestampToGedcomDate($time)->display() . '<span class="date"> - ' . $time_fmt . '</span>';
- }
+ return self::timestampToGedcomDate($time)->display() . '<span class="date"> - ' . $time_fmt . '</span>';
+ }
- /**
- * Convert a unix-style timestamp into a Date object
- *
- * @param int $time
- *
- * @return Date
- */
- public static function timestampToGedcomDate($time) {
- return new Date(strtoupper(gmdate('j M Y', $time)));
- }
+ /**
+ * Convert a unix-style timestamp into a Date object
+ *
+ * @param int $time
+ *
+ * @return Date
+ */
+ public static function timestampToGedcomDate($time)
+ {
+ return new Date(strtoupper(gmdate('j M Y', $time)));
+ }
}