@@ -323,7 +323,7 @@ |
||
323 | 323 | { |
324 | 324 | return Registry::cache()->file()->remember('whois-asn-' . $asn, function () use ($asn): array { |
325 | 325 | $ranges = $this->network_service->findIpRangesForAsn($asn); |
326 | - $mapper = static fn (string $range): RangeInterface|null => Factory::parseRangeString($range); |
|
326 | + $mapper = static fn (string $range): RangeInterface | null => Factory::parseRangeString($range); |
|
327 | 327 | $ranges = array_map($mapper, $ranges); |
328 | 328 | |
329 | 329 | return array_filter($ranges); |
@@ -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. |
@@ -115,7 +115,7 @@ |
||
115 | 115 | ->flatten(); |
116 | 116 | |
117 | 117 | // Don't show family meta-data tags |
118 | - $exclude_facts = new Collection(['FAM:CHAN', 'FAM:_UID', 'FAM:UID', 'FAM:SUBM']); |
|
118 | + $exclude_facts = new Collection(['FAM:CHAN', 'FAM:_UID', 'FAM:UID', 'FAM:SUBM']); |
|
119 | 119 | // Don't show tags that are shown in tabs or sidebars |
120 | 120 | $exclude_facts = $exclude_facts->merge($sidebar_facts)->merge($tab_facts); |
121 | 121 |
@@ -107,7 +107,7 @@ discard block |
||
107 | 107 | string $line_endings, |
108 | 108 | string $filename, |
109 | 109 | string $format, |
110 | - Collection|null $records = null |
|
110 | + Collection | null $records = null |
|
111 | 111 | ): ResponseInterface { |
112 | 112 | $access_level = self::ACCESS_LEVELS[$privacy]; |
113 | 113 | |
@@ -177,9 +177,9 @@ discard block |
||
177 | 177 | string $encoding = UTF8::NAME, |
178 | 178 | int $access_level = Auth::PRIV_HIDE, |
179 | 179 | string $line_endings = 'CRLF', |
180 | - Collection|null $records = null, |
|
181 | - ZipArchive|FilesystemOperator|null $zip_filesystem = null, |
|
182 | - string|null $media_path = null |
|
180 | + Collection | null $records = null, |
|
181 | + ZipArchive | FilesystemOperator | null $zip_filesystem = null, |
|
182 | + string | null $media_path = null |
|
183 | 183 | ) { |
184 | 184 | $stream = fopen('php://memory', 'wb+'); |
185 | 185 |
@@ -164,7 +164,7 @@ discard block |
||
164 | 164 | /** |
165 | 165 | * @param list<int> $parent_place_ids |
166 | 166 | */ |
167 | - public function deleteUnusedLocations(int|null $parent_location_id, array $parent_place_ids): void |
|
167 | + public function deleteUnusedLocations(int | null $parent_location_id, array $parent_place_ids): void |
|
168 | 168 | { |
169 | 169 | if ($parent_location_id === null) { |
170 | 170 | $location_query = DB::table('place_location') |
@@ -199,7 +199,7 @@ discard block |
||
199 | 199 | * |
200 | 200 | * @return Collection<int,object{id:int,key:string,place:string,latitude:float|null,longitude:float|null,child_count:int,no_coord:int}> |
201 | 201 | */ |
202 | - public function getPlaceListLocation(int|null $parent_id): Collection |
|
202 | + public function getPlaceListLocation(int | null $parent_id): Collection |
|
203 | 203 | { |
204 | 204 | $expression = |
205 | 205 | DB::prefix('p1') . '.place IS NOT NULL AND ' . DB::prefix('p1') . '.latitude IS NULL OR ' . |
@@ -248,7 +248,7 @@ discard block |
||
248 | 248 | 'child_count' => (int) $row->child_count, |
249 | 249 | 'no_coord' => (int) $row->no_coord, |
250 | 250 | ]) |
251 | - ->sort(static fn (object $x, object $y): int => I18N::comparator()($x->place, $y->place)); |
|
251 | + ->sort(static fn (object $x, object $y) : int => I18N::comparator()($x->place, $y->place)); |
|
252 | 252 | } |
253 | 253 | |
254 | 254 | public function writeLatitude(float $latitude): string |
@@ -80,60 +80,60 @@ |
||
80 | 80 | return [ |
81 | 81 | 'HEAD:_GUID' => new PafUid(I18N::translate('Identifiant du fichier')), |
82 | 82 | 'FAM:_CREA' => new Creation(I18N::translate('Created at')), |
83 | - 'FAM:_UST' => new HeredisUST(I18N::translate('Statut d’union')), // Union type |
|
83 | + 'FAM:_UST' => new HeredisUST(I18N::translate('Statut d’union')), // Union type |
|
84 | 84 | 'FAM:*:DATE:_TIME' => new TimeValue(I18N::translate('Time')), |
85 | - 'FAM:*:PLAC:_SUBMAP' => new Coordinates(I18N::translate('Géolocalisation des subdivisions')), // Geolocation of subdivisions |
|
85 | + 'FAM:*:PLAC:_SUBMAP' => new Coordinates(I18N::translate('Géolocalisation des subdivisions')), // Geolocation of subdivisions |
|
86 | 86 | 'FAM:*:PLAC:_SUBMAP:LATI' => new PlaceLatitude(I18N::translate('Latitude') . ' des subdivisions'), |
87 | 87 | 'FAM:*:PLAC:_SUBMAP:LONG' => new PlaceLongtitude(I18N::translate('Longitude') . ' des subdivisions'), |
88 | - 'FAM:*:SOUR:_QUAL' => new EmptyElement(I18N::translate('Qualité des citations complètes')), // Quality of completed citations |
|
89 | - 'FAM:*:SOUR:_QUAL:_SOUR' => new HeredisQualSour(I18N::translate('Qualité de la source')), // Quality of the source |
|
90 | - 'FAM:*:SOUR:_QUAL:_INFO' => new HeredisQualInfo(I18N::translate('Qualité de l’information')), // Quality of the information |
|
91 | - 'FAM:*:SOUR:_QUAL:_EVID' => new HeredisQualEvid(I18N::translate('Qualité de la preuve')), // Quality of proof |
|
92 | - 'FAM:*:_RECH' => new EmptyElement(I18N::translate('Infos de recherche de l’événement')), // Research Data of an event |
|
93 | - 'FAM:*:_RECH:_PROJ' => new CustomElement(I18N::translate('Projet de recherche')), // Research Data Project |
|
94 | - 'FAM:*:_RECH:TYPE' => new CustomElement(I18N::translate('Document de recherche')), // Search Document type of Search Data tab |
|
95 | - 'FAM:*:_RECH:PLAC' => new PlaceName(I18N::translate('Lieu de recherche')), // Search Place of Search Data tab |
|
96 | - 'FAM:*:_RECH:DATE' => new DateValueExact(I18N::translate('Date de recherche')), // Search date of Search Data tab |
|
97 | - 'FAM:*:_RECH:REFN' => new UserReferenceNumber(I18N::translate('Référence de la recherche')), // Search data call number |
|
98 | - 'FAM:*:_RECH:WWW' => new AddressWebPage(I18N::translate('Site web de la recherche')), // Search data website field |
|
99 | - 'FAM:*:_RECH:NOTE' => new NoteStructure(I18N::translate('Note de recherche')), // Research note |
|
100 | - 'INDI:_CLS' => new CustomBooleanFact(I18N::translate('Individu sans postérité')), // Person without descendants |
|
88 | + 'FAM:*:SOUR:_QUAL' => new EmptyElement(I18N::translate('Qualité des citations complètes')), // Quality of completed citations |
|
89 | + 'FAM:*:SOUR:_QUAL:_SOUR' => new HeredisQualSour(I18N::translate('Qualité de la source')), // Quality of the source |
|
90 | + 'FAM:*:SOUR:_QUAL:_INFO' => new HeredisQualInfo(I18N::translate('Qualité de l’information')), // Quality of the information |
|
91 | + 'FAM:*:SOUR:_QUAL:_EVID' => new HeredisQualEvid(I18N::translate('Qualité de la preuve')), // Quality of proof |
|
92 | + 'FAM:*:_RECH' => new EmptyElement(I18N::translate('Infos de recherche de l’événement')), // Research Data of an event |
|
93 | + 'FAM:*:_RECH:_PROJ' => new CustomElement(I18N::translate('Projet de recherche')), // Research Data Project |
|
94 | + 'FAM:*:_RECH:TYPE' => new CustomElement(I18N::translate('Document de recherche')), // Search Document type of Search Data tab |
|
95 | + 'FAM:*:_RECH:PLAC' => new PlaceName(I18N::translate('Lieu de recherche')), // Search Place of Search Data tab |
|
96 | + 'FAM:*:_RECH:DATE' => new DateValueExact(I18N::translate('Date de recherche')), // Search date of Search Data tab |
|
97 | + 'FAM:*:_RECH:REFN' => new UserReferenceNumber(I18N::translate('Référence de la recherche')), // Search data call number |
|
98 | + 'FAM:*:_RECH:WWW' => new AddressWebPage(I18N::translate('Site web de la recherche')), // Search data website field |
|
99 | + 'FAM:*:_RECH:NOTE' => new NoteStructure(I18N::translate('Note de recherche')), // Research note |
|
100 | + 'INDI:_CLS' => new CustomBooleanFact(I18N::translate('Individu sans postérité')), // Person without descendants |
|
101 | 101 | 'INDI:_CREA' => new Creation(I18N::translate('Created at')), |
102 | - 'INDI:_FIL' => new HeredisFIL(I18N::translate('Filiation de l’individu')), // Child Status |
|
103 | - 'INDI:_FNF' => new CustomBooleanFact(I18N::translate('Père introuvable')), // Father not found, untraceable |
|
104 | - 'INDI:_MNF' => new CustomBooleanFact(I18N::translate('Mère introuvable')), // Mother not found, untraceable |
|
105 | - 'INDI:_SEC' => new CustomBooleanFact(I18N::translate('Individu secondaire')), // Secondary person |
|
106 | - 'INDI:_ULS' => new CustomBooleanFact(I18N::translate('Individu sans alliance')), // Unmarried person |
|
102 | + 'INDI:_FIL' => new HeredisFIL(I18N::translate('Filiation de l’individu')), // Child Status |
|
103 | + 'INDI:_FNF' => new CustomBooleanFact(I18N::translate('Père introuvable')), // Father not found, untraceable |
|
104 | + 'INDI:_MNF' => new CustomBooleanFact(I18N::translate('Mère introuvable')), // Mother not found, untraceable |
|
105 | + 'INDI:_SEC' => new CustomBooleanFact(I18N::translate('Individu secondaire')), // Secondary person |
|
106 | + 'INDI:_ULS' => new CustomBooleanFact(I18N::translate('Individu sans alliance')), // Unmarried person |
|
107 | 107 | 'INDI:SIGN' => new CustomBooleanFact(I18N::translate('Signature')), |
108 | 108 | 'INDI:ASSO:_AGE' => new AgeAtEvent(I18N::translate('Age')), |
109 | 109 | 'INDI:ASSO:_ROLE' => new RoleInEvent(I18N::translate('Role')), |
110 | 110 | 'INDI:ASSO:_TITL' => new CustomElement(I18N::translate('Title')), |
111 | 111 | 'INDI:ASSO:_TYPE' => new CustomElement(I18N::translate('Type')), |
112 | 112 | 'INDI:*:DATE:_TIME' => new TimeValue(I18N::translate('Time')), |
113 | - 'INDI:*:PLAC:_SUBMAP' => new Coordinates(I18N::translate('Géolocalisation des subdivisions')), // Geolocation of subdivisions |
|
113 | + 'INDI:*:PLAC:_SUBMAP' => new Coordinates(I18N::translate('Géolocalisation des subdivisions')), // Geolocation of subdivisions |
|
114 | 114 | 'INDI:*:PLAC:_SUBMAP:LATI' => new PlaceLatitude(I18N::translate('Latitude') . ' des subdivisions'), |
115 | 115 | 'INDI:*:PLAC:_SUBMAP:LONG' => new PlaceLongtitude(I18N::translate('Longitude') . ' des subdivisions'), |
116 | - 'INDI:*:SOUR:_QUAL' => new EmptyElement(I18N::translate('Qualité des citations complètes')), // Quality of completed citations |
|
117 | - 'INDI:*:SOUR:_QUAL:_SOUR' => new HeredisQualSour(I18N::translate('Qualité de la source')), // Quality of the source |
|
118 | - 'INDI:*:SOUR:_QUAL:_INFO' => new HeredisQualInfo(I18N::translate('Qualité de l’information')), // Quality of the information |
|
119 | - 'INDI:*:SOUR:_QUAL:_EVID' => new HeredisQualEvid(I18N::translate('Qualité de la preuve')), // Quality of proof |
|
120 | - 'INDI:*:_ETI' => new CustomElement(I18N::translate('Etiquettes personnalisées')), // Personalized flags |
|
121 | - 'INDI:*:_FNA' => new HeredisFNA(I18N::translate('Etat des recherches')), // Research Status of an event |
|
122 | - 'INDI:*:_RECH' => new HeredisRechElement(I18N::translate('Infos de recherche')), // Research Data of an event |
|
123 | - 'INDI:*:_RECH:_PROJ' => new CustomElement(I18N::translate('Projet de recherche')), // Research Data Project |
|
124 | - 'INDI:*:_RECH:TYPE' => new CustomElement(I18N::translate('Document de recherche')), // Search Document type of Search Data tab |
|
125 | - 'INDI:*:_RECH:PLAC' => new PlaceName(I18N::translate('Lieu de recherche')), // Search Place of Search Data tab |
|
126 | - 'INDI:*:_RECH:DATE' => new DateValueExact(I18N::translate('Date de recherche')), // Search date of Search Data tab |
|
127 | - 'INDI:*:_RECH:REFN' => new UserReferenceNumber(I18N::translate('Référence de la recherche')), // Search data call number |
|
128 | - 'INDI:*:_RECH:WWW' => new AddressWebPage(I18N::translate('Site web de la recherche')), // Search data website field |
|
129 | - 'INDI:*:_RECH:NOTE' => new NoteStructure(I18N::translate('Note de recherche')), // Research note |
|
116 | + 'INDI:*:SOUR:_QUAL' => new EmptyElement(I18N::translate('Qualité des citations complètes')), // Quality of completed citations |
|
117 | + 'INDI:*:SOUR:_QUAL:_SOUR' => new HeredisQualSour(I18N::translate('Qualité de la source')), // Quality of the source |
|
118 | + 'INDI:*:SOUR:_QUAL:_INFO' => new HeredisQualInfo(I18N::translate('Qualité de l’information')), // Quality of the information |
|
119 | + 'INDI:*:SOUR:_QUAL:_EVID' => new HeredisQualEvid(I18N::translate('Qualité de la preuve')), // Quality of proof |
|
120 | + 'INDI:*:_ETI' => new CustomElement(I18N::translate('Etiquettes personnalisées')), // Personalized flags |
|
121 | + 'INDI:*:_FNA' => new HeredisFNA(I18N::translate('Etat des recherches')), // Research Status of an event |
|
122 | + 'INDI:*:_RECH' => new HeredisRechElement(I18N::translate('Infos de recherche')), // Research Data of an event |
|
123 | + 'INDI:*:_RECH:_PROJ' => new CustomElement(I18N::translate('Projet de recherche')), // Research Data Project |
|
124 | + 'INDI:*:_RECH:TYPE' => new CustomElement(I18N::translate('Document de recherche')), // Search Document type of Search Data tab |
|
125 | + 'INDI:*:_RECH:PLAC' => new PlaceName(I18N::translate('Lieu de recherche')), // Search Place of Search Data tab |
|
126 | + 'INDI:*:_RECH:DATE' => new DateValueExact(I18N::translate('Date de recherche')), // Search date of Search Data tab |
|
127 | + 'INDI:*:_RECH:REFN' => new UserReferenceNumber(I18N::translate('Référence de la recherche')), // Search data call number |
|
128 | + 'INDI:*:_RECH:WWW' => new AddressWebPage(I18N::translate('Site web de la recherche')), // Search data website field |
|
129 | + 'INDI:*:_RECH:NOTE' => new NoteStructure(I18N::translate('Note de recherche')), // Research note |
|
130 | 130 | 'NOTE:_CREA' => new Creation(I18N::translate('Created at')), |
131 | 131 | 'OBJE:_CREA' => new Creation(I18N::translate('Created at')), |
132 | 132 | 'REPO:_CREA' => new Creation(I18N::translate('Created at')), |
133 | 133 | 'SOUR:EMAIL' => new AddressEmail(I18N::translate('Email address')), |
134 | 134 | 'SOUR:QUAY' => new CertaintyAssessment(I18N::translate('Quality of data')), |
135 | 135 | 'SOUR:TYPE' => new CustomElement(I18N::translate('Type')), |
136 | - 'SOUR:_ARCH' => new CustomElement(I18N::translate('Classement')), // Archive |
|
136 | + 'SOUR:_ARCH' => new CustomElement(I18N::translate('Classement')), // Archive |
|
137 | 137 | 'SOUR:_CREA' => new Creation(I18N::translate('Created at')), |
138 | 138 | ]; |
139 | 139 | } |