/*
ustawic pobieranie linków
wygenerowac mape strony
przetłumacyzć kategorie
przetlumacyzc kategori starych portali i postawic na niemieckich doemnach
// *** dodac do bazy
ALTER TABLE `kategorie` ADD `jezyk` VARCHAR(8) CHARACTER SET latin2 COLLATE latin2_general_ci NULL DEFAULT NULL AFTER `glebokosc`;
zrobic w bazie:
- dodac kolumne z jezykiem w tabeli kategorii
- dodoac id w tabeli kategorii jako unikane a z id_kategorii zdjąć indeks
*/
ini_set("display_errors",1);
error_reporting(E_ERROR);
session_start();
$lang = null;
$googleSearch = null;
$artykul = null;
$db_search = null;
$katalog = null;
$kategoria = null;
$lista = null;
$miasto = null;
$miejscowosc = null;
$podkategoria = null;
$ustaw = null;
$artykuly_front = null;
$kategorie = null;
$miastaid = null;
$mod_rewrite_lang = null;
unset($categoryHaveChildren);
unset($aktalnaGlebokosc);
/*Plik z informacjami o domenach, frazach, metatagach itd.*/
include('domeny_info.inc.php'); $allappconf=$appconf; /*dla hreflang*/
$_GET['lang'] = $appconf['lang_default'];
// Ustawienie wersji językowej
if(isset($_GET['lang']))$_SESSION['lang']=$_GET['lang'];
if(!$_SESSION['lang']){$lang=$appconf['lang_default'];}else{$lang=$_SESSION['lang'];}; /*lang*/
$langDB = strtoupper($lang);
$kategoriaPoczatkowa = 1;
$kategoriaInPoczatkowa = 2;
$kategoriaPoczatkowa = 4777;
$kategoriaInPoczatkowa = 4778;
// faktyznie kliknieta kategoria, bo pożniej zmienna $_GET['katgoria'] jest podmieniana i tracimy te informacjami
$kliknietaKategoria = $_GET['kategoria'];
// Połączenie z bazą danych
$db = new PDO(
'mysql:dbname='.$appconf['dbname'].';host='.$appconf['dbhost'],
$appconf['dbuser'],
$appconf['dbpassword'],
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8")
);
$id_kategoria_start_db = getStartIDCategory($langDB, $db, $appconf['id_portal']);
$kategoriaPoczatkowa = $id_kategoria_start_db[0]['id_kategorii'];// tutaj musi być id root kategorii dla danego portalu -czyli parametr lewa =1
$kategoriaInPoczatkowa = $id_kategoria_start_db[1]['id_kategorii'];// tutaj musi byc id kategorii która ma być otwarta i porubiona, czli zwykle pierwsza po id root , czyli parametr lewa = 2
//print $kategoriaPoczatkowa.' '.$kategoriaInPoczatkowa;
//Wyciaga wszystkie kategorie z bazy i tworzy zpaytanie sql wstawiajace w wersji en
/*
$dane_z_bazy = $db->prepare("SELECT * FROM kategorie where jezyk = 'PL' order by id");
$dane_z_bazy->execute();
$dane_z_bazy = $dane_z_bazy->fetchAll(PDO::FETCH_ASSOC);
foreach($dane_z_bazy as $id => $ksql) {
//$sql = "INSERT INTO 'kategorie' (kategoria_nazwa, kategoria_nazwa_seo, kategoria_status, lewa, prawa, glebokosc, jezyk) VALUES ('".$ksql['kategoria_nazwa']."[en]','".$ksql['kategoria_nazwa_seo']."[en]','".$ksql['kategoria_status']."','".$ksql['lewa']."','".$ksql['prawa']."','".$ksql['glebokosc']."','EN');";
//print $sql."
";
print $ksql['kategoria_nazwa']."
";
};
*/
$czyPrzeladowacDrzewo = 0;
$categoryHaveChildren = false;
$koniecPetli = false;
// Jeżeli kategoria ma dzieci to pętla wykonyana jest jeden raz.
// Jeżeli kategoria nie ma dzieci to pętla jest wykonywana dwa razy, pierwszy po to aby sprawdzić czy kategoria ma dzici
// drugi raz aby ustawić kategorię dla której jest kliknięte rodzica
do {
unset($categories3);
if (!$categoryHaveChildren && $czyPrzeladowacDrzewo==1) {
// Jeżeli funkcja nie ma dzieci to pętla wykonywana jest jeszcze raz ale z ustaiwonymi parapetrami
// Kategoria startowa dla której wyciągane jest drzewo kategorii jest rodzicem kliknietej kategorii która nie ma dzieci
// print "dwa
";
$kategoriaStart = $idRodzica;
$czyPrzeladowacDrzewo=0;
//$categoryHaveChildren = true;
$koniecPetli = true;
};
if ($czyPrzeladowacDrzewo==1) $czyPrzeladowacDrzewo=0;
// Zaczynamy od najwyższego poziomu drzewa kategorii
$aktalnaGlebokosc = 1;
// Jeżeli nie jest wybrana (kliknieta) kategoria to pobieramy drzewo kategorii dla kategorii o id=1 czyli root
if (!$_GET['kategoria']) $kategoriaStart = $kategoriaPoczatkowa; else $kategoriaStart = $_GET['kategoria'];
// Ustawiona jest pierwsza kategoria, która ma być otwarta
if (!$_GET['kategoria']) $in=$kategoriaInPoczatkowa;
// Jeżeli jest kliknięta kategoria to ta kategoria staje się aktywną i tą która ma być otwarta jeżeli jest blokiem z podkategoriami
if($_GET['kategoria']) $in=$_GET['kategoria'];
// Jeżeli wchodzimy na portal bez klikania w kategorię to ustawia pogrubienie na otwartym bloku
if(!$_GET['kategoria']) $_GET['kategoria'] = $in;
// Jeżeli była wykonana petla drugi raz tzn. że klkinieta kategoria nie ma podkategorii to ustawia
// kategorie nadrzedną jako startową aby pokazać w meny kategorię nadrzędną do klikniętej w raz z
// kategoriami na tym samym pozimie co kliknieta
if ($koniecPetli) {
$kategoriaStart = $idRodzica;
$in=$idRodzica;
};
// Pobieranie danej kategegorii wraz z jej podkategoriami na podstawie którego jest budowane lewe menu
$categories3 = getTreeCategories($kategoriaStart,$langDB, $db, $appconf['id_portal']);
// Pobieranie danych dla aktywnej (klikniętej) kategorii
$selectedCategory = getSelectedCategory($langDB, $db, $appconf['id_portal']);
// Sprawdza dla kliknietej kategorii idRodzica oraz czy ma dzieci oraz głębokość (kliknietej kategorii)
$family = checkCategoryFamily($categories3, $in);
// Aktualna glebokosc kliknietej kategorii
$aktalnaGlebokosc = $family['depth'];
// Id rodzica kliknietej kategorii
//$idRodzica = $family['idParent'];
$daneKategoriiRodzica = getIdParent($categories3, $kategoriaPoczatkowa, $_GET['kategoria'], $langDB, $db, $appconf['id_portal']);
$idRodzica = $daneKategoriiRodzica['id_kategorii'];
// Czy kliknięta kategoria ma dzieci
$categoryHaveChildren = $family['haveChildren'];
//if ($categoryHaveChildren) print "Ma dzieci
"; else print "Nie ma dzieci
";
// Jeżeli katrgoria ma dzieci to po wykoniu funkcji wychodzi z pętli
if ($categoryHaveChildren) {
$czyPrzeladowacDrzewo=0;
//print "raz";
} elseif (!$koniecPetli) $czyPrzeladowacDrzewo=1;
} while ($czyPrzeladowacDrzewo > 0);
// ************************** Funkcje [POCZATEK] *********************************//
function getTreeCategories($kategoriaStart, $langDB, $db, $id_portal) {
//pobieranie danej kategegorii wraz z jej podkategoriami na podstawie którego jest budowane lewe menu
$selectedCategory = $db->prepare('SELECT * FROM kategorie WHERE id_kategorii = '.$kategoriaStart." and jezyk='".$langDB."' and id_portal=".$id_portal);
$selectedCategory ->execute();
$selectedCategory = $selectedCategory->fetch(PDO::FETCH_ASSOC);
if(($selectedCategory['prawa'] - $selectedCategory['lewa']) !== 1) {
$categories3 = $db->prepare('SELECT * FROM kategorie WHERE lewa >= '.$selectedCategory['lewa'].' AND prawa <= '.$selectedCategory['prawa']." and jezyk='".$langDB."' and id_portal=".$id_portal." ORDER BY lewa");
$categories3->execute();
$categories3 = $categories3->fetchAll(PDO::FETCH_ASSOC);
if (!$_GET['kategoria']) unset($categories3[0]);
} else {
$categories3[] = $selectedCategory;
}
return $categories3;
};
function getSelectedCategory($langDB, $db, $id_portal){
// Pobieranie danych dla aktywnej (klikniętej) kategorii
$selectedCategory = $db->prepare('SELECT * FROM kategorie WHERE id_kategorii = '.$_GET['kategoria']." and jezyk='".$langDB."' and id_portal=".$id_portal);
$selectedCategory->execute();
$selectedCategory = $selectedCategory->fetch(PDO::FETCH_ASSOC);
//print "Wybrana kategoria:".$selectedCategory['kategoria_nazwa'];
return $selectedCategory;
};
function checkCategoryFamily($categories3, $in) {
// Ustala id kategorii rodzica dla wybranej kategorii aby rozwinąć blok, w którym jest kliknięta podkategoria
// Ustala także czy wybrana kategoria ma dzieci
$categoryHaveChildren = false;
foreach($categories3 as $idKateg => $daneKategorii) {
// Sprawdza czy następna na liście kategorii kategoria ma większą głębokość, jeżeli tak to oznacza, że poprzednia kategoria czyli
// aktualnie wybrana ma dzieci.
if ($nastepnaKategoria && ($daneKategorii['glebokosc'] > $aktualnaGlebokosc)) $categoryHaveChildren = true;
$nastepnaKategoria = false;
// $idRodzicaHelp[$daneKategorii['glebokosc']] = $daneKategorii['id_kategorii'];
if ($daneKategorii['id_kategorii'] == $in) {
// $idRodzica = $idRodzicaHelp[($daneKategorii['glebokosc']-1)];
$aktalnaGlebokosc = $daneKategorii['glebokosc'];
$nastepnaKategoria = true; // informuje aby sprawdzić następną kategorie na liście po wybranej (klikniętej)
};
};
//$family['idParent'] = $idRodzica;
$family['haveChildren'] = $categoryHaveChildren;
$family['depth'] = $aktalnaGlebokosc;
return $family;
};
function getIdParent($categories3, $kategoriaStart, $idKategoria, $langDB, $db,$id_portal) {
//pobieranie danej kategegorii wraz z jej podkategoriami na podstawie którego jest budowane lewe menu
$selectedCategory = $db->prepare('SELECT * FROM kategorie WHERE id_kategorii = '.$kategoriaStart." and jezyk='".$langDB."' and id_portal=".$id_portal);
$selectedCategory ->execute();
$selectedCategory = $selectedCategory->fetch(PDO::FETCH_ASSOC);
if(($selectedCategory['prawa'] - $selectedCategory['lewa']) !== 1) {
$categories3 = $db->prepare("SELECT * FROM kategorie WHERE lewa >= ".$selectedCategory['lewa']." AND prawa <= ".$selectedCategory['prawa']." and jezyk='".$langDB."' and id_portal = ".$id_portal." ORDER BY lewa");
$categories3->execute();
$categories3 = $categories3->fetchAll(PDO::FETCH_ASSOC);
if (!$_GET['kategoria']) unset($categories3[0]);
} else {
$categories3[] = $selectedCategory;
}
foreach($categories3 as $idKateg => $daneKategorii) {
// Sprawdza czy następna na liście kategorii kategoria ma większą głębokość, jeżeli tak to oznacza, że poprzednia kategoria czyli
// aktualnie wybrana ma dzieci.
if ($nastepnaKategoria && ($daneKategorii['glebokosc'] > $aktualnaGlebokosc)) $categoryHaveChildren = true;
$nastepnaKategoria = false;
$idRodzicaHelp[$daneKategorii['glebokosc']] = $daneKategorii;
if ($daneKategorii['id_kategorii'] == $idKategoria) {
//$idRodzica = $idRodzicaHelp[($daneKategorii['glebokosc']-1)];
$idRodzica = $idRodzicaHelp[($daneKategorii['glebokosc']-1)]['id_kategorii'];
$daneKatrogiiRodzica = $idRodzicaHelp[($daneKategorii['glebokosc']-1)];
$aktalnaGlebokosc = $daneKategorii['glebokosc'];
$nastepnaKategoria = true; // informuje aby sprawdzić następną kategorie na liście po wybranej (klikniętej)
};
};
//return $idRodzica;
return $daneKatrogiiRodzica;
};
function getStartIDCategory($langDB, $db, $id_portal){
// Szuka ID katrgorii root oraz pierwszej po niej, która ma być katywna po wejściu na serwis
$selectedCategory = $db->prepare("SELECT id_kategorii FROM kategorie WHERE lewa in (1,2) and jezyk='".$langDB."' and id_portal=".$id_portal." order by lewa asc");
$selectedCategory->execute();
$selectedCategory = $selectedCategory->fetchAll(PDO::FETCH_ASSOC);
return $selectedCategory;
};
// ************************** Funkcje [KONIEC] *********************************//
/*nakładka i modyfikacja appconf w przypadku wersji językowych*/
foreach($appconf as $key=>$val)if(is_array($val)&&$val['pl'])$appconf[$key]=$val[$lang];
if($appconf['show_katalog']){ // Jeżeli portal ma kategorie to jest ładowana tablica z kategoriami
include('kategorie_portali/'.$domena.'.inc.php');
$allkategorie['pl']=$kategorie;/*dla hreflang*/
include('kategorie_portali/en/'.$domena.'.inc.php');
$allkategorie['en']=$kategorie;/*dla hreflang*/
include('kategorie_portali/de/'.$domena.'.inc.php');
$allkategorie['de']=$kategorie;/*dla hreflang*/
$kategorie=array();
if($lang=='pl'){include('kategorie_portali/'.$domena.'.inc.php');}else{include('kategorie_portali/'.$lang.'/'.$domena.'.inc.php');};
/** /
foreach($kategorie as $kategoria){
foreach($kategoria as $lp=>$array){
echo $array['0'];
echo '
';
};
echo '
';
};
exit;
/**/
};
/* Lukasz 01.10.2021 - po informacji od google - wyłaczylem wypełnianie automatyczne szukajki
if(!$_GET['lista']&&!$_GET['artykul']) { $googleSearch = $appconf['default_search']; $googleNoH1=true; };// domyślnie szukanie w Google
if(isset($_GET['fraza'])) { // szukanie wg fraz w Google
$googleSearch = $appconf['frazy'][$_GET['fraza']];
$appconf['title'] = ucfirst($googleSearch);
if($_SESSION['miejscowosc'])$appconf['title'].=', '.$_SESSION['miejscowosc'];
$appconf['title'] .= ' - '.$domena;
if($_SESSION['miejscowosc'])$appconf['keywords'].=', '.$_SESSION['miejscowosc'];
$googleNoH1=false;
$istitle=true;
};
if($_GET['katalog']=='g'&&isset($_GET['kategoria'])) { // szukanie wg katalogu w Google
// Laczy nazwe katgorii z nazwa kategorii rodzica
//$googleSearch = $daneKategoriiRodzica['kategoria_nazwa'].' '.$selectedCategory['kategoria_nazwa'];
$googleSearch = $selectedCategory['kategoria_nazwa_seo'];
$appconf['title'] = ucfirst($selectedCategory['kategoria_nazwa']).' - '.$domena;
$googleNoH1=false;
$istitle=true;
};
*/
if($_POST['q']){ // szukanie przez szukajkę w Google
$googleSearch = $_POST['q'];
$appconf['title'] = ucfirst($googleSearch);
if($_SESSION['miejscowosc'])$appconf['title'].=', '.$_SESSION['miejscowosc'];
$appconf['title'] .= ' - '.$domena;
if($_SESSION['miejscowosc'])$appconf['keywords'].=', '.$_SESSION['miejscowosc'];
$googleNoH1=false;
$istitle=true;
};
/****************************************SQL*******************************************/
// Podpowiedzi miast
if($appconf['show_miasta']){ /*miasta*/
$q_miasta= $db->prepare("SELECT * FROM miasta WHERE jezyk ='".$langDB."'");
$q_miasta ->execute();
$q_miasta = $q_miasta->fetchAll(PDO::FETCH_ASSOC);
foreach($q_miasta as $idMiasta => $daneMiasta) {
$miasta[]=$daneMiasta['nazwa_miasta'];
$miastaid[$daneMiasta['nazwa_miasta']]=$daneMiasta['id_miasta'];/*id przypisane do miasta*/
};
};
// Wyniki wyszukiwania pobrane z bazydla danej kategorii w danym języku
if($googleSearch && in_array($lang,$appconf['db_search'])){
$q_linki= $db->prepare("SELECT * FROM searched_links where phrase = '".$googleSearch."' and language = '".$lang."' and title is not null and description is not null order by link_order");
$q_linki ->execute();
$q_linki = $q_linki->fetchAll(PDO::FETCH_ASSOC);
foreach($q_linki as $idLinki => $daneLinki) {
$db_search[] = $daneLinki;
};
};
if($appconf['show_artykuly']){ /*artykuly*/
if($_SERVER['HTTP_HOST']=='127.0.0.1'){$db=mysql_connect($appconf['dbhost'],'root','');}else{$db=mysql_connect('remotedb','neoportal','DwpLCdxW');};
if($db){
if(mysql_select_db('neoportal',$db)){
mysql_query("set names 'utf8'");
if($_GET['lista']){
/*artykuly lista*/ $nastronie = 15;
$q = "SELECT count(id_artykul) as ile FROM artykuly_portale WHERE id_portal = '".$appconf['id_portal']."'";
$res = mysql_query($q,$db); $row = mysql_fetch_assoc($res);
$wszystkie = $row['ile']; $stron = ceil($wszystkie/$nastronie); $strona = $_GET['lista']-1;
$q = "SELECT id_artykul,tytul,zajawka,ikona,data_publikacji FROM artykuly_portale,artykuly WHERE id_portal = '".$appconf['id_portal']."' ".
"AND artykuly_portale.id_artykul = artykuly.id ".
"ORDER by data_publikacji DESC LIMIT ".$strona*$nastronie.",".$nastronie;
$res = mysql_query($q,$db);
while ($row = mysql_fetch_assoc($res)){
$date = date('Y_m',strtotime($row['data_publikacji']));
if($row['ikona'])$row['ikona'] = 'img/art_icons/'.$date.'/'.$row['ikona'];
$artykuly_lista[]=$row;
};
}elseif($_GET['artykul']){
/*artykul*/
$q = "SELECT * FROM artykuly WHERE id = '".$_GET['artykul']."'";
$res = mysql_query($q,$db); $artykul = mysql_fetch_assoc($res);
/*typ*/
$q = "SELECT nazwa FROM artykuly_typy WHERE id_typ = '".$artykul['id_typ']."'";
$res = mysql_query($q,$db); $row = mysql_fetch_assoc($res); $artykul['typ_nazwa']=$row['nazwa'];
$appconf['title'] = $artykul['tytul'].' - '.$domena;
$appconf['description']= trim(strip_tags($artykul['zajawka']));
$appconf['keywords']= $artykul['tagi'];
$istitle=true;
}elseif($_GET['katalog']){
}else{
/*artykuly zajawki*/
$q = "SELECT id_artykul,tytul,zajawka,ikona,data_publikacji FROM artykuly_portale,artykuly WHERE id_portal = '".$appconf['id_portal']."' ".
"AND artykuly_portale.id_artykul = artykuly.id ".
"ORDER by data_publikacji DESC LIMIT 4";
$res = mysql_query($q,$db);
while ($row = mysql_fetch_assoc($res)){
$date = date('Y_m',strtotime($row['data_publikacji']));
if($row['ikona'])$row['ikona'] = 'img/art_icons/'.$date.'/'.$row['ikona'];
$artykuly_front[]=$row;
};
};
};
};
mysql_close($db);
};
/****************************************SQL*******************************************/
/*ustaw miejscowość do sesji po formularzu*/
if($_POST['ustaw']==$tlumacz[$lang]['Ustaw']&&$_POST['miejscowosc']){
$_SESSION['miejscowosc']=$_POST['miejscowosc'];
};
/*ustaw miejscowość do sesji po adresie url*/
if($_GET['miasto']){
$miasto=array_search($_GET['miasto'],$miastaid);
if($miasto)$_SESSION['miejscowosc']=$miasto;
};
if($_POST['ustaw']==$tlumacz[$lang]['Usuń']){
unset($_SESSION['miejscowosc']);
header('Location: http://www.'.$appconf['domena'].'/');
exit;
};
/*ustaw-katalog-miejscowosc*/
$mod_rewrite_katalog=$tlumacz[$lang]['katalog-firm'];
if(isset($miastaid[$_SESSION['miejscowosc']])){
$mod_rewrite_katalog.='-'.mod_rewrite($_SESSION['miejscowosc']).'-'.$miastaid[$_SESSION['miejscowosc']];
if($_GET['katalog']=='g'&&isset($_GET['kategoria'])){ /*miasto w metatagach*/
$appconf['title'] = ucfirst($selectedCategory['kategoria_nazwa']).', '.$_SESSION['miejscowosc'].' - '.$domena;
$appconf['keywords'].=', '.$_SESSION['miejscowosc'];
$istitle=true;
};
};
/*mod_rewrite_lang*/
if($lang!='pl')$mod_rewrite_lang=$lang.',';
if($_SESSION['miejscowosc']&&!$istitle){
$appconf['title'].=' - '.$_SESSION['miejscowosc'];
$appconf['keywords'].=', '.$_SESSION['miejscowosc'];
};
function mod_rewrite($url){
return ''.strtolower(str_replace(array('ą','ę','ć','ś','ń','ó','ł','ż','ź','ä','ö','ü','ß',' ','/',')','(',',','.',':','?','!','„','”','"','&','-','Ą','Ę','Ć','Ś','Ń','Ó','Ł','Ż','Ź','#39;'),
array('a','e','c','s','n','o','l','z','z','a','o','u','b','_','_','','','','','','','','','','','','_','a','e','c','s','n','o','l','z','z',''),$url));
};
function justify($text){
$text=str_replace(' ',' ',$text); //wyczyść
/*bękarty i wdowy*/
$text=str_replace(' o ',' o ',$text);
$text=str_replace(' i ',' i ',$text);
$text=str_replace(' w ',' w ',$text);
$text=str_replace(' z ',' z ',$text);
$text=str_replace(' a ',' a ',$text);
return $text;
};
function newsubstr($text,$cut){
$return=strip_tags($text);
/*przyciąc do pełnego wyrazu i hellip*/
$return=substr($text,0,$cut);
$text=substr($text,$cut);
$return.=substr($text,0,strpos($text,' ')).'...';
return $return;
};
function totitle($in){
foreach(explode(" ",$in) as $lp=>$x)if($lp>0){$out.=mb_convert_case($x,MB_CASE_LOWER,"UTF-8").' ';}else{$out.=mb_convert_case($x,MB_CASE_TITLE,"UTF-8").' ';};
//$x = explode(" ",$in);
//$x[0] = mb_convert_case($x[0],MB_CASE_TITLE,"UTF-8");
//$out = implode(" ",$x);
return $out;
};
?>