/**
* Имя модели для H1 / хлебных крошек / карточек (2026-11-11 — единая функция вместо трёх копий в model.php, photo.php,
* PhotoRepository::computeDisplayNameForCard). Порядок: display_name с пробелом («Имя Фамилия») → первый алиас из aka_names
* из 2–4 слов, кроме мусора из заголовков веток форума («Social Media», «content thread», «X / Y», «(Instagram)»…) → model → slug.
* Только вывод: aka_names в БД и сопоставление моделей при импорте (model_int_id / file_prefix / model) не трогаются.
*/
function ps_aka_is_junk(string $s): bool {
return (bool) preg_match('~\b(social|media|thread|threads|megathread|group|live|model|models|leak|leaks|leaked|onlyfans|fansly|patreon|instagram|tiktok|twitch|youtube|twitter|reddit|snapchat|official|page|account|nudes?|pics|photos?|videos?|compilation|collection|general|discussion|requests?|various|unknown|team|studios?|productions?|entertainment|network|channel|stream|streamer|cosplay|cosplayer|vsco|chaturbate|stripchat|myfreecams|camsoda|bongacams|cam|cams|kick|bigo|tango|cb|auf|on|for|pussy)\b|[():@/*|#<>]~i', $s);
}
function ps_display_name(array $m, string $slug = ''): string {
$d = trim((string) ($m['display_name'] ?? ''));
if ($d !== '' && strpos($d, ' ') !== false && !preg_match('#/(channel|user|album|wiki)/#', $d) && strlen($d) < 60) return $d;
foreach (normalize_aka_names($m['aka_names'] ?? null) as $aka) {
if (!is_string($aka) || $aka === '') continue;
$a = trim($aka);
if (preg_match('#/(channel|user|album|wiki)/#', $a) || strlen($a) > 60 || ps_aka_is_junk($a)) continue;
$w = preg_split('/\s+/u', $a, -1, PREG_SPLIT_NO_EMPTY);
if (count($w) >= 2 && count($w) <= 4 && ctype_alpha(mb_substr($w[0], 0, 1))) return $a;
}
if (!empty($m['model'])) return (string) $m['model'];
return $slug !== '' ? $slug : (string) ($m['model_int_id'] ?? '');
}
ssoficontreras / maisieellenfitness / ssoficontreras_ Nude Leaked OnlyFans Photo #17 - Porn Spider
Comments
Log in to comment.
No comments yet.