193ccd686SRico Sonntag<?php 23976b470SGreg Roach 393ccd686SRico Sonntag/** 493ccd686SRico Sonntag * webtrees: online genealogy 5*d11be702SGreg Roach * Copyright (C) 2023 webtrees development team 693ccd686SRico Sonntag * This program is free software: you can redistribute it and/or modify 793ccd686SRico Sonntag * it under the terms of the GNU General Public License as published by 893ccd686SRico Sonntag * the Free Software Foundation, either version 3 of the License, or 993ccd686SRico Sonntag * (at your option) any later version. 1093ccd686SRico Sonntag * This program is distributed in the hope that it will be useful, 1193ccd686SRico Sonntag * but WITHOUT ANY WARRANTY; without even the implied warranty of 1293ccd686SRico Sonntag * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1393ccd686SRico Sonntag * GNU General Public License for more details. 1493ccd686SRico Sonntag * You should have received a copy of the GNU General Public License 1589f7189bSGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>. 1693ccd686SRico Sonntag */ 17fcfa147eSGreg Roach 1893ccd686SRico Sonntagdeclare(strict_types=1); 1993ccd686SRico Sonntag 2093ccd686SRico Sonntagnamespace Fisharebest\Webtrees\Statistics\Service; 2193ccd686SRico Sonntag 2293ccd686SRico Sonntaguse Fisharebest\Webtrees\I18N; 2393ccd686SRico Sonntag 2493ccd686SRico Sonntag/** 2593ccd686SRico Sonntag * Functions for managing centuries. 2693ccd686SRico Sonntag */ 2793ccd686SRico Sonntagclass CenturyService 2893ccd686SRico Sonntag{ 2993ccd686SRico Sonntag /** 3093ccd686SRico Sonntag * Century name, English => 21st, Polish => XXI, etc. 3193ccd686SRico Sonntag * 3293ccd686SRico Sonntag * @param int $century 3393ccd686SRico Sonntag * 3493ccd686SRico Sonntag * @return string 3593ccd686SRico Sonntag */ 3693ccd686SRico Sonntag public function centuryName(int $century): string 3793ccd686SRico Sonntag { 3893ccd686SRico Sonntag if ($century < 0) { 3993ccd686SRico Sonntag return I18N::translate('%s BCE', $this->centuryName(-$century)); 4093ccd686SRico Sonntag } 4193ccd686SRico Sonntag 4293ccd686SRico Sonntag // The current chart engine (Google charts) can't handle <sup></sup> markup 4393ccd686SRico Sonntag switch ($century) { 4493ccd686SRico Sonntag case 21: 4593ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '21st')); 4693ccd686SRico Sonntag case 20: 4793ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '20th')); 4893ccd686SRico Sonntag case 19: 4993ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '19th')); 5093ccd686SRico Sonntag case 18: 5193ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '18th')); 5293ccd686SRico Sonntag case 17: 5393ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '17th')); 5493ccd686SRico Sonntag case 16: 5593ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '16th')); 5693ccd686SRico Sonntag case 15: 5793ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '15th')); 5893ccd686SRico Sonntag case 14: 5993ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '14th')); 6093ccd686SRico Sonntag case 13: 6193ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '13th')); 6293ccd686SRico Sonntag case 12: 6393ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '12th')); 6493ccd686SRico Sonntag case 11: 6593ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '11th')); 6693ccd686SRico Sonntag case 10: 6793ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '10th')); 6893ccd686SRico Sonntag case 9: 6993ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '9th')); 7093ccd686SRico Sonntag case 8: 7193ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '8th')); 7293ccd686SRico Sonntag case 7: 7393ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '7th')); 7493ccd686SRico Sonntag case 6: 7593ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '6th')); 7693ccd686SRico Sonntag case 5: 7793ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '5th')); 7893ccd686SRico Sonntag case 4: 7993ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '4th')); 8093ccd686SRico Sonntag case 3: 8193ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '3rd')); 8293ccd686SRico Sonntag case 2: 8393ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '2nd')); 8493ccd686SRico Sonntag case 1: 8593ccd686SRico Sonntag return strip_tags(I18N::translateContext('CENTURY', '1st')); 8693ccd686SRico Sonntag default: 8793ccd686SRico Sonntag return ($century - 1) . '01-' . $century . '00'; 8893ccd686SRico Sonntag } 8993ccd686SRico Sonntag } 9093ccd686SRico Sonntag} 91