403Webshell
Server IP : 188.114.96.3  /  Your IP : 216.73.216.143
Web Server : Apache
System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64
User :  ( 3194769)
PHP Version : 8.5.12
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /polana/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /polana/includes/polana_v11_lang.php
<?php
declare(strict_types=1);
/** Public language routes, flag switcher and safe SEO readiness. No API calls on public views. */
function p11_lang(): string {
    $lang = strtolower((string)($_GET['lang'] ?? ''));
    if (in_array($lang,['pl','en','de','es'],true)) return $lang;
    $p = parse_url((string)($_SERVER['REQUEST_URI'] ?? '/'),PHP_URL_PATH) ?: '/';
    if (preg_match('~^/(en|de|es)(?:/|$)~',$p,$m)) return $m[1];
    if (function_exists('polana_lang')) {
        $fromLegacy = polana_lang();
        if (in_array($fromLegacy,['pl','en','de','es'],true)) return $fromLegacy;
    }
    return 'pl';
}
function p11_base_path(string $path): string {
    $path = parse_url($path,PHP_URL_PATH) ?: '/';
    $path = preg_replace('~^/(?:en|de|es)(?=/|$)~','',$path);
    if (!$path || $path==='') $path='/';
    $aliases = ['/chef'=>'/andrzej-polan','/contact'=>'/kontakt','/reservation'=>'/rezerwacja',
      '/privacy'=>'/polityka-prywatnosci','/allergens'=>'/alergeny','/gallery'=>'/galeria',
      '/cooperation'=>'/wspolpraca','/newsletter'=>'/newsletter.php','/reviews'=>'/opinie',
      '/review'=>'/opinia'];
    return $aliases[$path]??$path;
}
function p11_path(string $path,string $lang): string {
    $rawQuery=(string)(parse_url($path,PHP_URL_QUERY) ?: '');
    parse_str($rawQuery,$params);
    $suffix=isset($params['kind']) && in_array($params['kind'],['food','soft','wine'],true) ? '?kind='.rawurlencode((string)$params['kind']) : '';
    $base=p11_base_path($path);
    if($lang==='pl')return $base.$suffix;
    if(!in_array($lang,['en','de','es'],true))$lang='pl';
    if($lang==='pl')return $base.$suffix;
    $aliases=['/andrzej-polan'=>'/chef','/kontakt'=>'/contact','/rezerwacja'=>'/reservation',
       '/polityka-prywatnosci'=>'/privacy','/alergeny'=>'/allergens','/galeria'=>'/gallery',
       '/wspolpraca'=>'/cooperation','/newsletter.php'=>'/newsletter',
       '/opinie'=>'/reviews','/opinia'=>'/review'];
    $base=$aliases[$base]??$base;
    return '/'.$lang.($base==='/'?'/':$base).$suffix;
}
function p11_page_ready(string $path,string $lang): bool {
    if($lang==='pl')return true;
    if(!in_array($lang,['en','de','es'],true))return false;
    $path=p11_base_path($path);
    static $cache=[];
    $key=$path.'|'.$lang;
    if(array_key_exists($key,$cache))return $cache[$key];
    if(preg_match('~^/blog/([a-z0-9-]+)$~',$path,$m)){
      // During sitemap generation prefetch all published blog language readiness once.
      static $blogReady=null;
      if($blogReady===null){
         $blogReady=[];
         try{
            $all=db()->query("SELECT slug,title_en,content_en,title_de,content_de,title_es,content_es FROM blog_posts WHERE status='published' AND publish_at<=NOW() AND publish_at IS NOT NULL")->fetchAll(PDO::FETCH_ASSOC);
            foreach($all as $article){
               foreach(['en','de','es'] as $code){
                  $blogReady[$article['slug'].'|'.$code]=trim((string)($article['title_'.$code]??''))!=='' && trim((string)($article['content_'.$code]??''))!=='';
               }
            }
         }catch(Throwable $e){error_log('P11 blog readiness: '.$e->getMessage());}
      }
      return $cache[$key]=(bool)($blogReady[$m[1].'|'.$lang]??false);
    }
    // Static pages, including blog index, require explicit full-page editorial review.
    try{
      $q=db()->prepare('SELECT ready FROM polana_v11_page_locales WHERE path=? AND lang=? LIMIT 1');
      $q->execute([$path,$lang]);return $cache[$key]=((int)$q->fetchColumn()===1);
    }catch(Throwable $e){return $cache[$key]=false;}
}
function p11_hreflang(string $canonicalPath): array {
    $path=p11_base_path($canonicalPath);
    $out=['pl'=>site_url(p11_path($path,'pl'))];
    foreach(['en','de','es'] as $lang)if(p11_page_ready($path,$lang))$out[$lang]=site_url(p11_path($path,$lang));
    return $out;
}
function p11_render_switcher(): void {
    $url=(string)($_SERVER['REQUEST_URI']??'/');
    $base=p11_base_path($url);$selected=p11_lang();
    $langNames=['pl'=>'Polski','en'=>'English','de'=>'Deutsch','es'=>'Español'];
    $images=['pl'=>'pl.svg','en'=>'gb.svg','de'=>'de.svg','es'=>'es.svg'];
    $query=parse_url($url,PHP_URL_QUERY);
    parse_str((string)$query,$q);
    $kind=isset($q['kind']) && in_array($q['kind'],['food','wine','soft'],true)?'?kind='.rawurlencode((string)$q['kind']):'';
    echo '<div class="p11-language-bar" role="navigation" aria-label="Wybierz język strony">';
    foreach($langNames as $lang=>$label){
      $path=p11_path($base,$lang);
      if(preg_match('~^/blog/([a-z0-9-]+)$~',$base) && !p11_page_ready($base,$lang) && $lang!=='pl')$path=p11_path('/blog',$lang);
      $href=$path.$kind;
      echo '<a class="p11-lang '.($selected===$lang?'is-active':'').'" href="'.htmlspecialchars($href,ENT_QUOTES,'UTF-8').'" lang="'.$lang.'" hreflang="'.$lang.'" aria-label="'.htmlspecialchars($label,ENT_QUOTES,'UTF-8').'" title="'.htmlspecialchars($label,ENT_QUOTES,'UTF-8').'"'.($selected===$lang?' aria-current="page"':'').'><img src="/assets/flags/'.$images[$lang].'" width="24" height="16" alt=""><span>'.$langNames[$lang].'</span></a>';
    }
    echo '</div>';
}
/** Curated public meta text. Dynamic blog articles retain their own translated meta. */
function p11_meta(string $path,string $lang): ?array {
 $key=p11_base_path($path);
 if($lang==='pl'||!in_array($lang,['en','de','es'],true))return null;
 $words=[
  '/'=>[
   'en'=>['Polish Restaurant in Kraków Kazimierz | Moja Polana Smaków','Discover seasonal Polish flavours at Moja Polana Smaków, Andrzej Polan’s restaurant in Kraków’s Kazimierz district.'],
   'de'=>['Polnisches Restaurant in Krakau Kazimierz | Moja Polana Smaków','Entdecken Sie saisonale polnische Küche im Restaurant Moja Polana Smaków von Andrzej Polan im Krakauer Stadtteil Kazimierz.'],
   'es'=>['Restaurante polaco en Kazimierz, Cracovia | Moja Polana Smaków','Descubre la cocina polaca de temporada en Moja Polana Smaków, el restaurante de Andrzej Polan en Kazimierz, Cracovia.']],
  '/menu'=>[
   'en'=>['Restaurant Menu in Kraków | Moja Polana Smaków','Explore current seasonal dishes, soft drinks and wines at Moja Polana Smaków in Kraków.'],
   'de'=>['Speisekarte in Krakau | Moja Polana Smaków','Entdecken Sie saisonale Gerichte, alkoholfreie Getränke und Weine im Restaurant Moja Polana Smaków in Krakau.'],
   'es'=>['Carta del restaurante en Cracovia | Moja Polana Smaków','Consulta los platos de temporada, bebidas sin alcohol y vinos de Moja Polana Smaków en Cracovia.']],
  '/andrzej-polan'=>[
   'en'=>['Andrzej Polan | Chef of Moja Polana Smaków','Get to know chef Andrzej Polan and the philosophy behind the seasonal Polish cuisine at Moja Polana Smaków.'],
   'de'=>['Andrzej Polan | Küchenchef von Moja Polana Smaków','Lernen Sie Andrzej Polan und seine Leidenschaft für saisonale polnische Küche kennen.'],
   'es'=>['Andrzej Polan | Chef de Moja Polana Smaków','Conoce al chef Andrzej Polan y su filosofía de cocina polaca de temporada.']],
  '/kontakt'=>[
   'en'=>['Contact and Location | Moja Polana Smaków, Kraków','Find Moja Polana Smaków at Bożego Ciała 15 in Kraków’s Kazimierz district and get in touch.'],
   'de'=>['Kontakt und Anfahrt | Moja Polana Smaków Krakau','Besuchen Sie Moja Polana Smaków in der Bożego Ciała 15 im Krakauer Stadtteil Kazimierz.'],
   'es'=>['Contacto y ubicación | Moja Polana Smaków Cracovia','Encuentra Moja Polana Smaków en Bożego Ciała 15, en el barrio de Kazimierz de Cracovia.']],
  '/rezerwacja'=>[
   'en'=>['Restaurant Reservations | Moja Polana Smaków','Request a table at Moja Polana Smaków, a Polish restaurant in Kraków’s Kazimierz district.'],
   'de'=>['Tischreservierung | Moja Polana Smaków','Reservieren Sie einen Tisch im Restaurant Moja Polana Smaków im Krakauer Stadtteil Kazimierz.'],
   'es'=>['Reservas de mesa | Moja Polana Smaków','Solicita una mesa en Moja Polana Smaków, restaurante de cocina polaca en Kazimierz, Cracovia.']],
  '/galeria'=>[
   'en'=>['Photo Gallery | Moja Polana Smaków','See photos from Moja Polana Smaków, its seasonal dishes and restaurant atmosphere in Kraków.'],
   'de'=>['Bildergalerie | Moja Polana Smaków','Entdecken Sie Fotos der Gerichte und Atmosphäre von Moja Polana Smaków in Krakau.'],
   'es'=>['Galería de fotos | Moja Polana Smaków','Descubre fotos de los platos y el ambiente de Moja Polana Smaków en Cracovia.']],
  '/alergeny'=>[
   'en'=>['Ingredients and Allergens | Moja Polana Smaków','Information about ingredients and allergens in dishes served at Moja Polana Smaków.'],
   'de'=>['Zutaten und Allergene | Moja Polana Smaków','Informationen über Zutaten und Allergene in den Gerichten von Moja Polana Smaków.'],
   'es'=>['Ingredientes y alérgenos | Moja Polana Smaków','Información sobre ingredientes y alérgenos de los platos de Moja Polana Smaków.']],
  '/polityka-prywatnosci'=>[
   'en'=>['Privacy Policy | Moja Polana Smaków','Read the privacy policy and information about personal data processing at Moja Polana Smaków.'],
   'de'=>['Datenschutzerklärung | Moja Polana Smaków','Lesen Sie unsere Datenschutzerklärung und Informationen zur Verarbeitung personenbezogener Daten.'],
   'es'=>['Política de privacidad | Moja Polana Smaków','Consulta nuestra política de privacidad y el tratamiento de datos personales.']],
  '/blog'=>[
   'en'=>['Food and Kraków Kazimierz Blog | Moja Polana Smaków','Discover stories about Kraków Kazimierz, seasonal ingredients, Polish dishes and cooking at Moja Polana Smaków.'],
   'de'=>['Kulinarischer Blog aus Krakau Kazimierz | Moja Polana Smaków','Geschichten über Kazimierz, saisonale Zutaten, polnische Gerichte und die Küche von Moja Polana Smaków.'],
   'es'=>['Blog gastronómico de Kazimierz, Cracovia | Moja Polana Smaków','Historias de Kazimierz, ingredientes de temporada y cocina polaca de Moja Polana Smaków.']],
  '/wspolpraca'=>[
   'en'=>['Work With Us | Moja Polana Smaków','Learn about opportunities to collaborate with Moja Polana Smaków in Kraków.'],
   'de'=>['Zusammenarbeit | Moja Polana Smaków','Erfahren Sie mehr über Möglichkeiten zur Zusammenarbeit mit Moja Polana Smaków in Krakau.'],
   'es'=>['Colaboración | Moja Polana Smaków','Conoce las posibilidades de colaboración con Moja Polana Smaków en Cracovia.']]
 ];
 $value=$words[$key][$lang]??null;
 return $value?['title'=>$value[0],'description'=>$value[1]]:null;
}

Youez - 2016 - github.com/yon3zu
LinuXploit