@@ -228,7 +228,7 @@ |
||
| 228 | 228 | 'style' => Validator::parsedBody($request)->isInArrayKeys($this->styles())->integer('style'), |
| 229 | 229 | 'width' => Validator::parsedBody($request)->isBetween(self::MINIMUM_WIDTH, self::MAXIMUM_WIDTH)->integer('width'), |
| 230 | 230 | 'xref' => Validator::parsedBody($request)->isXref()->string('xref'), |
| 231 | - ])); |
|
| 231 | + ])); |
|
| 232 | 232 | } |
| 233 | 233 | |
| 234 | 234 | Auth::checkComponentAccess($this, ModuleChartInterface::class, $tree, $user); |
@@ -1,20 +1,20 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | return array ( |
| 4 | - ' but the details are unknown' => ' but the details are unknown', |
|
| 5 | - '%H:%i:%s' => '%g:%i:%s %a', |
|
| 6 | - '%j %F %Y' => '%F %j, %Y', |
|
| 7 | - 'Asunción, Paraguay' => 'Asuncion, Paraguay', |
|
| 8 | - 'Bogotá, Colombia' => 'Bogota, Colombia', |
|
| 9 | - 'Ciudad Juárez, Mexico' => 'Ciudad Juarez, Mexico', |
|
| 10 | - 'Colonia Juárez, Mexico' => 'Colonia Juarez, Mexico', |
|
| 11 | - 'Curaçao' => 'Curacao', |
|
| 12 | - 'Córdoba, Argentina' => 'Cordoba, Argentina', |
|
| 13 | - 'Côte d’Ivoire' => 'Cote d’Ivoire', |
|
| 14 | - 'Réunion' => 'Reunion', |
|
| 15 | - 'Saint Barthélemy' => 'Saint Barthelemy', |
|
| 16 | - 'San José, Costa Rica' => 'San Jose, Costa Rica', |
|
| 17 | - 'São Paulo, Brazil' => 'Sao Paulo, Brazil', |
|
| 18 | - 'Tuxtla Gutiérrez, Mexico' => 'Tuxtla Gutierrez, Mexico', |
|
| 19 | - 'Åland Islands' => 'Aland Islands', |
|
| 4 | + ' but the details are unknown' => ' but the details are unknown', |
|
| 5 | + '%H:%i:%s' => '%g:%i:%s %a', |
|
| 6 | + '%j %F %Y' => '%F %j, %Y', |
|
| 7 | + 'Asunción, Paraguay' => 'Asuncion, Paraguay', |
|
| 8 | + 'Bogotá, Colombia' => 'Bogota, Colombia', |
|
| 9 | + 'Ciudad Juárez, Mexico' => 'Ciudad Juarez, Mexico', |
|
| 10 | + 'Colonia Juárez, Mexico' => 'Colonia Juarez, Mexico', |
|
| 11 | + 'Curaçao' => 'Curacao', |
|
| 12 | + 'Córdoba, Argentina' => 'Cordoba, Argentina', |
|
| 13 | + 'Côte d’Ivoire' => 'Cote d’Ivoire', |
|
| 14 | + 'Réunion' => 'Reunion', |
|
| 15 | + 'Saint Barthélemy' => 'Saint Barthelemy', |
|
| 16 | + 'San José, Costa Rica' => 'San Jose, Costa Rica', |
|
| 17 | + 'São Paulo, Brazil' => 'Sao Paulo, Brazil', |
|
| 18 | + 'Tuxtla Gutiérrez, Mexico' => 'Tuxtla Gutierrez, Mexico', |
|
| 19 | + 'Åland Islands' => 'Aland Islands', |
|
| 20 | 20 | ); |
@@ -57,52 +57,52 @@ |
||
| 57 | 57 | * Instead, the list from version 1.26 is copied here. |
| 58 | 58 | */ |
| 59 | 59 | public const array AI_ROBOTS = [ |
| 60 | - 'AI2Bot', |
|
| 61 | - 'Ai2Bot-Dolma', |
|
| 62 | - 'Amazonbot', |
|
| 63 | - 'anthropic-ai', |
|
| 64 | - 'Applebot', |
|
| 65 | - 'Applebot-Extended', |
|
| 66 | - 'Brightbot 1.0', |
|
| 67 | - 'Bytespider', |
|
| 68 | - 'CCBot', |
|
| 69 | - 'ChatGPT-User', |
|
| 70 | - 'Claude-Web', |
|
| 71 | - 'ClaudeBot', |
|
| 72 | - 'cohere-ai', |
|
| 73 | - 'cohere-training-data-crawler', |
|
| 74 | - 'Crawlspace', |
|
| 75 | - 'Diffbot', |
|
| 76 | - 'DuckAssistBot', |
|
| 77 | - 'FacebookBot', |
|
| 78 | - 'FriendlyCrawler', |
|
| 79 | - 'Google-Extended', |
|
| 80 | - 'GoogleOther', |
|
| 81 | - 'GoogleOther-Image', |
|
| 82 | - 'GoogleOther-Video', |
|
| 83 | - 'GPTBot', |
|
| 84 | - 'iaskspider/2.0', |
|
| 85 | - 'ICC-Crawler', |
|
| 86 | - 'ImagesiftBot', |
|
| 87 | - 'img2dataset', |
|
| 88 | - 'ISSCyberRiskCrawler', |
|
| 89 | - 'Kangaroo Bot', |
|
| 90 | - 'meta-externalagent', |
|
| 91 | - 'meta-externalfetcher', |
|
| 92 | - 'OAI-SearchBot', |
|
| 93 | - 'omgili', |
|
| 94 | - 'omgilibot', |
|
| 95 | - 'PanguBot', |
|
| 96 | - 'PerplexityBot', |
|
| 97 | - 'PetalBot', |
|
| 98 | - 'Scrapy', |
|
| 99 | - 'SemrushBot-OCOB', |
|
| 100 | - 'SemrushBot-SWA', |
|
| 101 | - 'Sidetrade indexer bot', |
|
| 102 | - 'Timpibot', |
|
| 103 | - 'VelenPublicWebCrawler', |
|
| 104 | - 'Webzio-Extended', |
|
| 105 | - 'YouBot', |
|
| 60 | + 'AI2Bot', |
|
| 61 | + 'Ai2Bot-Dolma', |
|
| 62 | + 'Amazonbot', |
|
| 63 | + 'anthropic-ai', |
|
| 64 | + 'Applebot', |
|
| 65 | + 'Applebot-Extended', |
|
| 66 | + 'Brightbot 1.0', |
|
| 67 | + 'Bytespider', |
|
| 68 | + 'CCBot', |
|
| 69 | + 'ChatGPT-User', |
|
| 70 | + 'Claude-Web', |
|
| 71 | + 'ClaudeBot', |
|
| 72 | + 'cohere-ai', |
|
| 73 | + 'cohere-training-data-crawler', |
|
| 74 | + 'Crawlspace', |
|
| 75 | + 'Diffbot', |
|
| 76 | + 'DuckAssistBot', |
|
| 77 | + 'FacebookBot', |
|
| 78 | + 'FriendlyCrawler', |
|
| 79 | + 'Google-Extended', |
|
| 80 | + 'GoogleOther', |
|
| 81 | + 'GoogleOther-Image', |
|
| 82 | + 'GoogleOther-Video', |
|
| 83 | + 'GPTBot', |
|
| 84 | + 'iaskspider/2.0', |
|
| 85 | + 'ICC-Crawler', |
|
| 86 | + 'ImagesiftBot', |
|
| 87 | + 'img2dataset', |
|
| 88 | + 'ISSCyberRiskCrawler', |
|
| 89 | + 'Kangaroo Bot', |
|
| 90 | + 'meta-externalagent', |
|
| 91 | + 'meta-externalfetcher', |
|
| 92 | + 'OAI-SearchBot', |
|
| 93 | + 'omgili', |
|
| 94 | + 'omgilibot', |
|
| 95 | + 'PanguBot', |
|
| 96 | + 'PerplexityBot', |
|
| 97 | + 'PetalBot', |
|
| 98 | + 'Scrapy', |
|
| 99 | + 'SemrushBot-OCOB', |
|
| 100 | + 'SemrushBot-SWA', |
|
| 101 | + 'Sidetrade indexer bot', |
|
| 102 | + 'Timpibot', |
|
| 103 | + 'VelenPublicWebCrawler', |
|
| 104 | + 'Webzio-Extended', |
|
| 105 | + 'YouBot', |
|
| 106 | 106 | ]; |
| 107 | 107 | |
| 108 | 108 | // Other bad robots - SEO optimisers, advertisers, etc. This list is shared with robots.txt. |
@@ -58,19 +58,19 @@ discard block |
||
| 58 | 58 | UTF8::LATIN_SMALL_LETTER_SHARP_S => 'ss', |
| 59 | 59 | ]; |
| 60 | 60 | } |
| 61 | - public function relationships(): array |
|
| 61 | + public function relationships(): array |
|
| 62 | 62 | { |
| 63 | 63 | // returns array => [nominativ, genitive %s] |
| 64 | 64 | // $genitive = static fn (string $prefix, string $suffix): array => [$prefix . $suffix, $prefix . 's' . $suffix . '%s']; |
| 65 | 65 | $genitive = static fn (string $prefix, string $suffix, int $gender): array => |
| 66 | - ($gender == 0) ? [$prefix . $suffix, '%s' . ' des ' . $prefix . 's' . $suffix] : (($gender == 1) ? [$prefix . $suffix, '%s' . ' der ' . $prefix . $suffix] : [$prefix . $suffix, '%s' . ' der ' . $prefix . $suffix]); |
|
| 66 | + ($gender == 0) ? [$prefix . $suffix, '%s' . ' des ' . $prefix . 's' . $suffix] : (($gender == 1) ? [$prefix . $suffix, '%s' . ' der ' . $prefix . $suffix] : [$prefix . $suffix, '%s' . ' der ' . $prefix . $suffix]); |
|
| 67 | 67 | |
| 68 | 68 | $ur = static fn (int $n, string $simpleGreat, string $suffix, int $gender): array => $genitive( |
| 69 | - (($n > 1) ? ($n + 1) . ' x Ur' : (($n > -1) ? 'Ur' . str_repeat('ur', $n) : '')) . $simpleGreat, $suffix, $gender |
|
| 70 | - // $n <= -1 -> '' |
|
| 71 | - // $n == 0 -> Ur |
|
| 72 | - // $n == 1 -> Urur |
|
| 73 | - // $n >= 2 -> $n+1 ' x Ur' |
|
| 69 | + (($n > 1) ? ($n + 1) . ' x Ur' : (($n > -1) ? 'Ur' . str_repeat('ur', $n) : '')) . $simpleGreat, $suffix, $gender |
|
| 70 | + // $n <= -1 -> '' |
|
| 71 | + // $n == 0 -> Ur |
|
| 72 | + // $n == 1 -> Urur |
|
| 73 | + // $n >= 2 -> $n+1 ' x Ur' |
|
| 74 | 74 | ); |
| 75 | 75 | |
| 76 | 76 | return [ |
@@ -163,48 +163,48 @@ discard block |
||
| 163 | 163 | Relationship::fixed('Enkelin', '%s der Enkelin')->child()->daughter(), |
| 164 | 164 | Relationship::fixed('Enkel', '%s des Enkels')->child()->son(), |
| 165 | 165 | Relationship::fixed('Enkelin/Enkel', '%s der Enkelin/des Enkels')->child()->child(), |
| 166 | - // Nichte / Neffe |
|
| 166 | + // Nichte / Neffe |
|
| 167 | 167 | Relationship::fixed('Nichte', '%s der Nichte')->sibling()->daughter(), |
| 168 | 168 | Relationship::fixed('Nichte', '%s der Nichte')->married()->spouse()->sibling()->daughter(), |
| 169 | 169 | Relationship::fixed('Neffe', '%s des Neffen')->sibling()->son(), |
| 170 | 170 | Relationship::fixed('Neffe', '%s des Neffen')->married()->spouse()->sibling()->son(), |
| 171 | 171 | Relationship::fixed('Nichte/Neffe', '%s der Nichte / des Neffen')->sibling()->child(), |
| 172 | 172 | Relationship::fixed('Nichte/Neffe', '%s der Nichte/ des Neffen')->married()->spouse()->sibling()->child(), |
| 173 | - // Großnichte / Großneffe |
|
| 173 | + // Großnichte / Großneffe |
|
| 174 | 174 | Relationship::fixed('Großnichte', '%s der Großnichte')->sibling()->child()->child()->female(), |
| 175 | 175 | Relationship::fixed('Großnichte', '%s der Großnichte')->married()->spouse()->sibling()->child()->child()->female(), |
| 176 | 176 | Relationship::fixed('Großneffe', '%s des Großneffen')->sibling()->child()->child()->male(), |
| 177 | 177 | Relationship::fixed('Großneffe', '%s des Großneffen')->married()->spouse()->sibling()->child()->child()->male(), |
| 178 | - // Tante / Onkel |
|
| 178 | + // Tante / Onkel |
|
| 179 | 179 | Relationship::fixed('Tante', '%s der Tante')->parent()->sister(), |
| 180 | 180 | Relationship::fixed('Tante', '%s der Tante')->parent()->brother()->wife(), |
| 181 | 181 | Relationship::fixed('Onkel', '%s des Onkels')->parent()->sister()->husband(), |
| 182 | 182 | Relationship::fixed('Onkel', '%s des Onkels')->parent()->brother(), |
| 183 | - // Großtante / Großonkel |
|
| 183 | + // Großtante / Großonkel |
|
| 184 | 184 | Relationship::fixed('Großtante', '%s der Großtante')->parent()->parent()->sister(), |
| 185 | 185 | Relationship::fixed('Großtante', '%s der Großtante')->parent()->parent()->brother()->wife(), |
| 186 | 186 | Relationship::fixed('Großonkel', '%s des Großonkels')->parent()->parent()->brother(), |
| 187 | 187 | Relationship::fixed('Großonkel', '%s des Großonkels')->parent()->parent()->sister()->husband(), |
| 188 | - // Cousin / Cousine |
|
| 188 | + // Cousin / Cousine |
|
| 189 | 189 | Relationship::fixed('Cousine', '%s der Cousine')->parent()->sister()->child()->female(), |
| 190 | 190 | Relationship::fixed('Cousine', '%s der Cousine')->parent()->brother()->child()->female(), |
| 191 | 191 | Relationship::fixed('Cousin', '%s des Cousins')->parent()->sister()->child()->male(), |
| 192 | 192 | Relationship::fixed('Cousin', '%s des Cousins')->parent()->brother()->child()->male(), |
| 193 | 193 | // Relationships with dynamically generated names |
| 194 | - // ancestors: n=2 -> Urgroßmutter (mütterlicherseits) / Großmutter der Mutter |
|
| 194 | + // ancestors: n=2 -> Urgroßmutter (mütterlicherseits) / Großmutter der Mutter |
|
| 195 | 195 | Relationship::dynamic(static fn (int $n) => $ur($n - 2, 'großmutter', ' (mütterlicherseits) ', 1))->mother()->ancestor()->female(), |
| 196 | 196 | Relationship::dynamic(static fn (int $n) => $ur($n - 2, 'großvater', ' (mütterlicherseits) ', 0))->mother()->ancestor()->male(), |
| 197 | 197 | Relationship::dynamic(static fn (int $n) => $ur($n - 2, 'großmutter', ' (väterlicherseits) ', 1))->father()->ancestor()->female(), |
| 198 | 198 | Relationship::dynamic(static fn (int $n) => $ur($n - 2, 'großvater', ' (väterlicherseits) ', 0))->father()->ancestor()->male(), |
| 199 | - // |
|
| 199 | + // |
|
| 200 | 200 | Relationship::dynamic(static fn (int $n) => $ur($n - 2, 'großeltern', ' (väterlicherseits) ', 2))->father()->ancestor(), |
| 201 | 201 | Relationship::dynamic(static fn (int $n) => $ur($n - 2, 'großeltern', ' (mütterlicherseits) ', 2))->mother()->ancestor(), |
| 202 | - // |
|
| 202 | + // |
|
| 203 | 203 | Relationship::dynamic(static fn (int $n) => $ur($n - 3, 'großtante', ' ', 1))->ancestor()->sister(), |
| 204 | 204 | Relationship::dynamic(static fn (int $n) => $ur($n - 3, 'großtante', ' ', 1))->ancestor()->sibling()->wife(), |
| 205 | 205 | Relationship::dynamic(static fn (int $n) => $ur($n - 3, 'großonkel', ' ', 0))->ancestor()->brother(), |
| 206 | 206 | Relationship::dynamic(static fn (int $n) => $ur($n - 3, 'großonkel', ' ', 0))->ancestor()->sibling()->husband(), |
| 207 | - // descendants |
|
| 207 | + // descendants |
|
| 208 | 208 | Relationship::dynamic(static fn (int $n) => $ur($n - 3, 'großnichte', ' ', 1))->sibling()->descendant()->female(), |
| 209 | 209 | Relationship::dynamic(static fn (int $n) => $ur($n - 3, 'großnichte', ' ', 1))->married()->spouse()->sibling()->descendant()->female(), |
| 210 | 210 | Relationship::dynamic(static fn (int $n) => $ur($n - 3, 'großneffe', ' ', 0))->sibling()->descendant()->male(), |