<?php
if (!ereg("www.apartament-kolonialny.kolobrzeg.pl", $_SERVER['SERVER_NAME']) 
	&& !ereg("dynamap.pl", $_SERVER['SERVER_NAME'])
	&& !ereg(".local", $_SERVER['SERVER_NAME'])) {
	$url = "https://www.apartament-kolonialny.kolobrzeg.pl";
	//if ($_SERVER['REQUEST_URI'] != "") $url .= $_SERVER['REQUEST_URI'];
	//header("Location: ".$url);
}

//<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2">
//echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
//echo("<br /><pre>\n"); print_r($_GET); echo(" &nbsp;&nbsp;&nbsp;<sup>(".__FILE__.','.__LINE__.")  </sup></pre>\n<br />"); 




//
// +----------------------------------------------------------------------+
// | DynaMap 4                                                            |
// +----------------------------------------------------------------------+
// | Copyright (c) 2001-2004 DynaSoft Przedsiebiorstwo Uslugowo-Handlowe  |
// +----------------------------------------------------------------------+
// | This source file is subject to version 1.0 of the DynaSoft license.  |
// +----------------------------------------------------------------------+
// | Author: Michal Borychowski <michal.borychowski@dynasoft.pl>          |
// +----------------------------------------------------------------------+
//

// $Id: index.php,v 1.8 2003/01/08 20:56:11 boryn Exp $

error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT);

set_time_limit(30);
ignore_user_abort(true); //TRUE, I want to ignore the user's abort request; 
						 //If user_abort_setting is set to TRUE, the script continues running until an error occurs, the script finishes execution, or the script times out. (http://www.phpdig.net/ref/rn10re182.html)


include('gpc_clean.php');






if ((strpos($_SERVER['HTTP_HOST'], 'dynamap.pl') || strpos($_SERVER['HTTP_HOST'], 'dynamap.com.pl'))) {
	include('dm-redirect.php');
}

//Musi byc przed config_dirs.php
$MAIN_FILE = basename(__FILE__);
include('config_dirs.php');

////////////////////////////////////////////
//WYKONAJ ODPOWIEDNIE PRZEKIEROWANIA START//
////////////////////////////////////////////
include_once(CONFIG2_DIR.'/config_options.php');

//???????
//to do /cart.php, pozniej do łatwego uzycia w /service/add_to_cart.php wywoływanego z JS

//todo: zoptymalizowac instancje koszyka, korzystac z "cachea" (aby nie stosowac duplikacji zapytan) gdzie mozna, na pewno w getototalamount
//$without_reload=true;

if ($dm_use_cart) {
	require_once(DMLIB_DIR.'/classes/cart.php');
	$cart=new DM_cart();

	//if(!$GLOBALS['without_reload'])
		include_once(MAIN_DIR.'/cart.php');

	//if($GLOBALS['without_reload'])
		//include_once(MAIN_DIR.'/cart_get.php');

	if($_GET['dbgjw']==1){
		include_once(MAIN_DIR."/service/shop/add_to_cart.php");
	}
}



//przekazanie do $_GET argumentow ze skroconego $_SERVER['QUERY_STRING'] odbywa sie w userdb_decodeConfRegQueryString
if($dm_userdb) {
	include_once(CONFIG_DIR.'/sql.php');
	include_once(DMLIB_DIR.'/functions/userdb.php');
}
require_once(DMLIB_DIR.'/functions/url.php');


if (isset($_GET["ch"]) && isset($_GET["chtype"]) && isset($_GET["userid"])) {
	url_redirect(url_strip("ch,chtype,userid"));
}



if ($dm_userdb && ''!=$_SERVER['QUERY_STRING'] && !isset($_GET['pageid']) && !isset($_GET['lang'])) {
	//$GLOBALS['USERDB']['CONF_REG_QUERY_STRING_LENGTH'] - w config_options.php

	//wewnetrznie powstaja odpowiednie $_GET
	userdb_decodeConfRegQueryString($_SERVER['QUERY_STRING'],$GLOBALS['USERDB']['CONF_REG_QUERY_STRING_LENGTH']);
	userdb_set_REQUEST_URI_ByConfRegQueryString();
}


//exit;
//Jest to dokładnie zawartość $usertree->textIds
//ale jako, że tu nie mamy jeszcze wciągniętego $usertree (i nie chcemy teraz tutaj tego wciągać)
//to musimy sobie to cachować w pliku
$textIdsCacheFile = @file_get_contents(XCACHE_DIR.'/text_ids.php');
if ($textIdsCacheFile === false) {
    //??? raise_error
}
$textIds = unserialize($textIdsCacheFile);
unset($textIdsCacheFile);


//Dla strony głównej, od razu integer 1
if ($_GET['pageid'] == '' && !isset($_GET['pagefurl'])) {
	$_GET['pageid'] = 1;
	$_SERVER['QUERY_STRING'] = url_insertIntoString($_GET);
	$_SERVER['REQUEST_URI'] = url_insert($_GET);
}


//Wykryj tekstowe pageid
if (!$insert['pageid'] && !((integer) $_GET['pageid'])) {
	if ($textIds[$_GET['pageid']]) $insert['pageid'] = $textIds[$_GET['pageid']];
}

//Złap 'q' z searcha
if ($_POST['q']) {
	$insert = array('q' => $_POST['q'], 'pageid' => $textIds['search']);
}

/*
print_r($_GET);
print_r($_POST);
print_r($insert);
exit;
*/

//Przekieruj (nie zapisując nic do stats)
//Zamień na odpowiednie pageid, które na pewno jest integerem
if ($insert) {
    $location = url_insert($insert);
	header("Location: $location");
	exit;
}
///////////////////////////////////////////
//WYKONAJ ODPOWIEDNIE PRZEKIEROWANIA STOP//
///////////////////////////////////////////


//GET LANG 
//Ustal język, tak - aby stats wiedziały o jaki lang chodzi

//Jeżeli mamy do czynienia z wyszukiwarką, to językiem niech będzie język domyślny
//Reszta języków do zeskanowania przez nią - podawana jako lang w gecie
include_once(MAIN_DIR.'/browsers.php');

require_once(DMLIB_DIR.'/classes/langdetect.php');
include_once(CONFIG_DIR.'/lang.php');
$langdetection = new DM_LangDetect($DM['langs']);
$lang = $DM['lang'] = $langdetection->lang;
$DM['langNo'] = $langdetection->getLangNo();
$DM['dictLangNo'] = $langdetection->getDictLangNo();
$GLOBALS['XTPL_VARS']['DM']['lang'] = &$DM['lang'];
$GLOBALS['XTPL_VARS']['DM']['charset'] = &$GLOBALS['DM']['charsets']['display'][$lang];
$GLOBALS['DM']['charset'] = &$GLOBALS['XTPL_VARS']['DM']['charset'];



//echo("<br>koniec bajki");
//exit;

//Nie chcemy, aby przekierowywał - Google tego nie lubią...
//Niech zostanie główny adres, a tylko przepiszemy te wartości do _GET i odpowiednich pól w $_SERVER
//Uwaga: i tak pozostaje zasadzka - gdyz do stats nie wjedzie informacja o języku dla referera - jest ona generowana w przeglądarce
if ($_GET['lang'] == '') {
	$_GET['lang'] = $lang;
	
	$_SERVER['QUERY_STRING'] = url_insertIntoString($_GET);
	$_SERVER['REQUEST_URI'] = url_insert($_GET);
}
//GET LANG END


//EH
ob_start();


//BASE CONFIGS
//include_once(CONFIG2_DIR.'/config_options.php'); - przeniesione wyzej
include_once(CONFIG2_DIR.'/config_db.php');

//TIMER
//(Powyżej są tylko przekierowania i drobne inkludy;
//nienotowana różnica czasu to jedynie 0,003 sek.)
if ($dm_timer) {
	require_once "timer.php";
	$timer = new Benchmark_Timer;
	$timer->setMarker('Start');    
}



include_once(LIB_DIR."/phplib/prepend.php");
initializeDBbyPHPLib('db');



if($dm_sess == true) {
	//Patrz ustawienia dla tych funkcji na koncu pliku cache.php
	//PS. O ile poniżej nie zostanie uruchomione session_start(), to te funkcje nie będš miały wpływu na wysyłane headery
	
	
	//???? - zintegrowac z sesja
	//Podstawowe pytanie - czy potrzebujemy sesji z cachem?
	//jeśli tak, to można używać tych poniższych sformułowań I uruchamiać sesję przed cachem
	//Jeśli nie, to to nie ma znaczenia i powinniśmy zawsze headery wysyłać w "zwykły" sposób
	//session_cache_limiter($GLOBALS['CACHE']['cacheLimiter']); //'cacheLimiter'
	//session_cache_expire($GLOBALS['CACHE']['cacheExpire']); //'cacheExpire' w minutach


	//session_start();	
} else {				
	//Jeżeli mechanizm sesji jest wyłączony dla danej strony to sami wysyłamy odpowiednie nagłówki

	//??? czy te headery na pewno chcemy mieć tutaj jeśli nie korzystamy z cache?
	//header("Expires: ". gmdate("D, d M Y H:i:s", time() + 60 * $GLOBALS['CACHE']['cacheExpire'])." GMT"); 
	//header("Cache-Control: ". $GLOBALS['CACHE']['cacheLimiter'] .	", max-age=". 60 * $GLOBALS['CACHE']['cacheExpire']);
	
}









//POGO START
### Dodawanie par. listowania do URL-a 
/// ma to znaczenie jedynie dla cache
/// do DB informacje niezależnie przekazuje funkcja parseListingFiltrCookie() w locals.php
$l_f_par = json_decode($_COOKIE['l_f_par'], true); //pobieramy jako tablicę
//echo("<br /><pre>\n"); print_r($l_f_par); echo(" &nbsp;&nbsp;&nbsp;<sup>(".__FILE__.','.__LINE__.")  </sup></pre>\n<br />");

//Do URL-a dopisujemy &gbd=0 tylko jeśli ktoś wyłączył domyślne grupowanie
//Czyli gdy grupowanie jest włączone (czy to domyślnie, czy przez usera), to nic nie odpisuje do urla - jest to zachowanie po prostu domyślne
if (isset($l_f_par['gbd']) && !$l_f_par['gbd']) {
	$_SERVER['QUERY_STRING'] .= '&gbd=0';
}

foreach ((array) $l_f_par as $k=>$v) {
	if ($k == 'dts_'.$region_id && !empty($v) && is_array($v)) {
		$_SERVER['QUERY_STRING'] .= '&dts='.implode(',', $v);
		//$_GET['nocache'] = 1;
		//$listing_filtr = 1; //zbędne jednak
	}

	if ($k == 'scs_'.$region_id && !empty($v) && is_array($v)) {
		$_SERVER['QUERY_STRING'] .= '&scs='.implode(',', $v);
		//$_GET['nocache'] = 1;
		//$listing_filtr = 1; //zbędne jednak
	}
	
} //end foreach

//echo("<br /><pre>\n"); print_r($_SERVER['QUERY_STRING']); echo(" &nbsp;&nbsp;&nbsp;<sup>(".__FILE__.','.__LINE__.")  </sup></pre>\n<br />");

//Jeśli mamy aplikacje search lub listowanie wg tcm i używamy filtrowania listy, 
//to nie wysyłaj headera last modified - tzn. korzystamy z cachu (serwujemy gotowy plik), ale nie korzystamy z 304
if (($_GET['appl'] == 'search' || $_GET['appl'] == 'tcm') ) { //&& $listing_filtr - błędnie (przeciez bez cookie tez nie mozna wysylac, bo cookie sie moze zaraz pojawic i w przeglądarce zostanie błedna informacja, i mimo postawienia cookie w kolejnym kroku, browser bedzie serwował 304)
	$cache_dont_send_last_modified_header = 1;
}


//Przepisanie do {POGO.search_url}
$GLOBALS['XTPL_VARS']['POGO']['search_url'] = $GLOBALS['PG_CONFIG'][$lang]['search'];

//POGO END







//echo("<br /><pre>\n"); print_r($_GET); echo(" &nbsp;&nbsp;&nbsp;<sup>(".__FILE__.','.__LINE__.")  </sup></pre>\n<br />");



//echo("<br /><pre>\n"); print_r($_GET); echo(" &nbsp;&nbsp;&nbsp;<sup>(".__FILE__.','.__LINE__.")  </sup></pre>\n<br />");

//CACHE
//Pokazuj z cacha, o ile na zyczenie nie mamy nie cachowac go na silę
if ($dm_cache && !isset($_GET['nocache'])) {
	
	require_once(DMLIB_DIR.'/functions/cache.php');

	$_arCachedFileName = cache_getCachedFileName();
	$cachedFileName = $_arCachedFileName['use'];
	
	//Tu jest wyjątek na pokazywanie stron z cache'a
	//Mogłoby się zdarzyć, że strona byłaby już w cache'u zapisana i gdyby nie ten warunek, niepotrzebnie pokazalibyśmy ją właśnie z cache'a
	if ($_GET['err'] != '404' && $usertree->textId != 'cart' && !in_array($_GET['pageid'], (array) $GLOBALS['CACHE']['ignore_pageids'])) {
		cache_showCachedFile($cachedFileName);    
	}
	
	//include('stats_cache.php');
}


//[::Jarek::] link potwierdzajacy z rejestracji
if(isset($_GET['ukey']) && $_GET['ukey']!='')
{
	//33 - pageid od ekranu rejestracji
	$trans=array("pageid"=>33,"lang"=>$lang,"an"=>"rc","key"=>$_GET['ukey']);
	url_redirect(url_insert($trans,url_strip('ukey')));
}



initializeDBbyPDO('objDB');

//exit;

//$dbconfig['database'] = 'pogodzinach';
//initializeDBbyPDO('objDB2', $dbconfig);


//define('OPD_DIR', LIB_DIR.'/opd/lib/');
//require(OPD_DIR.'opd.class.php'); // 1

include('autoload.php');


$GA = new DM_Google_Analytics();





#######################
#SESJE BORYN ##########

if(isset($dm_sess) && $dm_sess==true) {
	//echo("<br>będziemy stosować sesje!");

	include_once(CONFIG_DIR.'/sql.php');

	require_once(DMLIB_DIR.'/classes/session.class.php');

	$DM_Session = new DM_Session(DMLIB_DIR.'/configs/session.ini');

	//$DM_Session->set('zmienna1', 'wartosc1');

	//$zmienna = $DM_Session->get('zmienna1');
	//echo("<br>odczytana1: $zmienna");

	
	
	//$DM_Session->set('zmienna1', array(0=>'zmienna tablicowa', 1=>'czy na pewno dziala?'));
	$DM_Session->set('zmienna4', 'cu\dzy\'s;l"o\\w');


	$zmienna = $DM_Session->get('zmienna1');
	//echo("<br>odczytana1: ");print_r($zmienna);

	$zmienna = $DM_Session->get('zmienna3');
	//echo("<br>odczytana3: ");print_r($zmienna);



	//echo("<br>ale teraz kasujemy 3");

	//$DM_Session->_unset('zmienna3');
	//$DM_Session->_unset('zmienna4');



	//session_destroy();
}

//$DM_Session->get('urlHistory');

//echo("<br /><br>Pozostala czesc skryptu<br />");
//print_r($DM_Session->_arSessionData);
//echo("<br><br /><br /><br />");

//$DM_Session->destruct();







//require_once(DMLIB_DIR."/userlite.class.php");
//require_once(DMLIB_DIR."/generic.class.php");


//$user=new DM_Generic (DMLIB_DIR.'/configs/user.userlite.ini',"userlite",$userId);
//$user=new DM_Userlite (DMLIB_DIR.'/configs/user.userlite.ini',"kolo2_user",null);

//$user=new DM_Userlite (DMLIB_DIR.'/configs/user.userlite.ini',"kolo2_user",2);

//$user->load('');
//echo("<br>dane z bazy:");
//print_r($user->getAllFields());

//$user->setField('forename','asdfasdfasdf1');
//$user->setField('surname','asdfasdfasdf2');
//$user->setField('email','');

//$user->save();

//exit;






//$timer->setMarker('przed cachem');
//17-08-2006 
if (isset($_GET['service'])) {
    $_GET['nocache'] = 1;
}

//exit;


if ('preview' == $_GET['an']) {
	//Dokonajmy autentykacji
    authenticate($GLOBALS['HT_HASH']['admin_preview'], 'Strona testowa');

	//Ustalamy stałą
	define('PREVIEW_MODE', true);
	$DM_PREVIEW_MODE = true;
	
	//Pdogląd aplikacji (np. newsów na pageid=5 - wtedy nie możemy korzystać z html/_preview/pl/5.tpl - to już musi być finalna strona)
	//&an=preview zostawiamy dla wymuszenia autentykacji
	if ('appl' == $_GET['antp']) { //aCTIOntYpE
		$DM_PREVIEW_APPL_MODE = true;
	} 
		
	//??? Wyłączmy cache

} else {

	//Musi pozostać, bo bez tego PREVIEW_MODE przyjmuje wartość "PREVIEW_MODE"
    define('PREVIEW_MODE', false);
}

function authenticate($HT_HASH, $realm, $httpsIsRequired = true, $info = "Ta strona serwisu wymaga autentykacji / This page demands authentication") {
	
	//Jak potrzebny https, to przekieruj
	//($GLOBALS['dm_https'] mówi o tym, czy w ogóle na tym serwerze ma być obsługiwany https)
	if ($httpsIsRequired && $GLOBALS['dm_https'] && !$_SERVER['HTTPS']) {
		$location = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
		header("Location: $location");
		exit;
	}


	//Autentykacja
	$user = sha1($_SERVER['PHP_AUTH_USER']);
	$pass = sha1($_SERVER['PHP_AUTH_PW']);

	if($user != $HT_HASH['user'] || $pass != $HT_HASH['pass']) {
		Header( "WWW-Authenticate: Basic realm=\"$realm\"");
		Header( "HTTP/1.0 401 Unauthorized");
		echo $info."\n"; 
		exit;
	}
} // end func




//Check for logo and license files
if (!file_exists(DMLIB_DIR.'/logodm.php') || !file_exists(DMLIB_DIR.'/license.php')) {
	echo("Witryna nie może zostać wyswietlona. System nie odnalazł wszystkich plików.<br>
	The system cannot go on. Lost some files.");
	exit;
}

if (isset($_GET['logo'])) {
	include(DMLIB_DIR.'/logodm.php');
}


if (isset($_GET['license']) || isset($_GET['licence']) || isset($_GET['licencja'])) {
	include(DMLIB_DIR.'/license.php');
}


//print_r($_SERVER);
/*
$imageASCIICodes = unserialize($imageASCIICodes);
//print_r($imageASCIICodes);
foreach ($imageASCIICodes as $v) {
	echo(chr($v));
} //end foreach

//echo(serialize($logo));
//echo($serialized);

//echo(unserialize($serialized));

//$fp = fopen ('dynamap-s', 'w');
	//fwrite ($fp, $serialized);
	//fclose($fp);    


exit;
*/



define ('ADMIN_EXT', '');
include_once('config.php');
include_once('addons.php');
require_once(DMLIB_DIR.'/functions/url.php');
require_once(DMLIB_DIR.'/functions/string.php');
require_once(DMLIB_DIR.'/functions/file.php');
require_once(DMLIB_DIR.'/functions/valid.php');
require_once(DMLIB_DIR.'/functions/sql.php');
require_once(DMLIB_DIR.'/functions/image.php');
require_once(DMLIB_DIR.'/functions/positioning.php');
require_once(LIB_DIR.'/xtemplate/xtpl.php');
require_once(DMLIB_DIR.'/classes/dmxtpl.php');
require_once(DMLIB_DIR.'/functions/js.php');
require_once(DMLIB_DIR.'/classes/draw_text.php');

//require_once(DMLIB_DIR.'/functions/mcrypt.php');
//echo string_crypt('ks@dynasoft.pl', 'trudnyKlucz');exit;



mb_internal_encoding ('UTF-8');

if ($dm_use_cart) {
	require_once(DMLIB_DIR.'/classes/cart.php');
}

include_once(DMLIB_DIR.'/classes/dictionary.php');
$dict = new DM_Dictionary;
$dict->in_charset = $GLOBALS['DM']['charsets']['store']  [$lang];
$dict->out_charset = $GLOBALS['DM']['charsets']['display'][$lang];
//$DICT = array_merge($DICT, $dict->read(APPL_TPL_DIR.'/dict.csv'));
$DICT = $dict->read(APPL_TPL_DIR.'/dict.csv');
if (file_exists(APPL_TPL_DIR.'/newsletter/dict.csv')) {
    $DICT = $dict->read(APPL_TPL_DIR.'/newsletter/dict.csv') + $DICT;//[:::DICT:::]
}



if ($dm_use_cart) {
	include_once(DMLIB_DIR.'/classes/currency.php');
	include_once(MAIN_DIR.'/currency.php');
	//echo($currency);
}

//$GLOBALS['XTPL_VARS'] = unserialize(base64_decode($xtplvars));

//$GLOBALS['XTPL_VARS']['PAGE']['id'] = '5';
//$GLOBALS['XTPL_VARS']['PAGE']['doctype'] = 'empty';

//print_r($xtplvars);

//$xtpl_main = new DM_XTemplate (TPL_DIR.ADMIN_EXT.'/'.$tplName.'.tpl');
//$xtpl_main = new DM_XTemplate (TPL_DIR.ADMIN_EXT.'/main.tpl');
//$xtpl_main = new DM_XTemplate (TPL_DIR.ADMIN_EXT.'/'.$GLOBALS['XTPL_VARS']['PAGE']['tplName'].'.tpl');
//!!! $xtpl_main class is defined in tree_navi.php



//TREE

/*
Początek prac, 21.07; skopiowane jedne z krótszych czasów:

Start 0 0 
treeStart 0.012 0.01239 
getCommon 0.356 0.36866 
getLang 0.216 0.58499 
treeEnd 0.036 0.62141 
Stop 0.004 0.62518 
*/

require_once(DMLIB_DIR.'/classes/tree.php');
//require_once(DMLIB_DIR.'/classes/tree_navi.php');
require_once(WWWPHP_DIR.'/classes/tree_navi.php');

//$timer->setMarker('treeStart');

///////////////////////////////////////////
//XCACHE & USERTREE	///////////////////////
///////////////////////////////////////////
if ($dm_xcache) require_once(DMLIB_DIR.'/functions/xcache.php');

//Można użyć $_GET['pageid'], gdyż mamy pewność, że
//zostało wykonane przekierowanie na pageid liczbowe
$xcachedFile = XCACHE_DIR."/$lang/".$_GET['pageid'].'.php';
if ($dm_xcache && file_exists($xcachedFile)) {

	//Flaga, która mówi o tym, czy xcache jest rzeczywiście używany
    $useXCache = true;
}

//$timer->setMarker('tree1');
if (!$useXCache) {
	//echo("<br>useXCache NO");

	//echo 'es5';exit;
	
	$usertree = new DM_UserTree($_GET['pageid'], $lang);
} else {
	//echo("<br>useXCache YES");
	
	$usertree = unserialize(@file_get_contents($xcachedFile));
}



//??.
$usertree->checkPossibleRedirects($usertree->pageId, $lang);
//echo("<br>preview: $DM_PREVIEW_MODE");
//exit;


//Przed nawigacja, aby i w niej byly dostepne zmienne typu
//{PAGE_ID.level_3}
//??.
$usertree->xtpl_referenceVariables();

//Prepare navi 
if (!$useXCache && $_GET['navi'] !== '0' && $_GET['navi'] != 'no') {
    $usertree->naviDefineLevels($usertree->pageId, $lang, 0);
	unset($usertree->rawNAVI);
}


$usertree->xtpl_referenceNavi();


//$timer->setMarker('treeEnd');

//Zapisz js dot. popupów w dynamapie
$usertree->js_savePopUpHrefs();
///////////////////////////////////////////
//XCACHE & USERTREE	///////////////////////
///////////////////////////////////////////


//echo("<br>podglad: PREVIEW_MODE");exit;

if ($DM_PREVIEW_MODE) {
    //"Od środka" włączmy na 100% stronę
	$usertree->info[$usertree->pageId][$lang]['isPublicated'] = 1;
}

//GZIPOWANIE PLIKÓW JS, VBS, CSS
//Gzipowanie odłożone w czasie - wymaga dogłębnego sprawdzenia działania na różnych platformach/przeglądarkach
//include(MAIN_DIR.'/gzwww.php');
$GLOBALS['XTPL_VARS']['DM']['jsExt'] = 'js';
$GLOBALS['XTPL_VARS']['DM']['vbsExt'] = 'vbs';
$GLOBALS['XTPL_VARS']['DM']['cssExt'] = 'css';
$GLOBALS['XTPL_VARS']['DM']['tgmJSExt'] = 'js';
//GZIPOWANIE PLIKÓW JS, VBS, CSS - STOP

include_once(DMLIB_DIR.'/classes/langselection.php');
$langsel = new DM_LangSelect;
$GLOBALS['XTPL_VARS']['DM']['langsel'] = $langsel->getLangSelectionCode();






###################################################
//Przygotuj odpowiednie kodowanie dla kodu GA Google Analytics
//(w tym miejscu, bo trzeba zassignować 'XTPL_VARS')

/*
$request_uri = iconv('UTF-8', 'ISO-8859-2', $request_uri);
$track[] = '/dec/latin2'.$request_uri.($search?'+dec+latin2':'');
$track[] = '/dec/plain'.string_pl2plain($request_uri).($search?'+dec+plain':'');

$request_uri = urlencode($request_uri);
$request_uri = str_replace('%2F', '/', $request_uri); 
$request_uri = str_replace('%3F', '?', $request_uri); 
$request_uri = str_replace('%3D', '=', $request_uri); 
$track[] = '/enc/latin2'.$request_uri.($search?'+enc+latin2':'');

foreach ($track as $k=>$v) {
	$GLOBALS['XTPL_VARS']['DM']['track_'.$k] = $v;
} //end foreach
*/

$GLOBALS['XTPL_VARS']['DM']['pageTracker'] = urldecode($_SERVER['REQUEST_URI']);
###################################################






#echo "zxc";exit;
//PRZEKIEROWANIE JEST WYWOLYWANE TU:
//echo TPL_DIR.ADMIN_EXT.'/'.$usertree->tplName.'.tpl';exit;
//echo("0<br>");
$xtpl_main = new DM_XTemplate (TPL_DIR.ADMIN_EXT.'/'.$usertree->tplName.'.tpl');
//echo "2<br>";



$docType = $usertree->docType;


//TU JUZ JEST TO PRZEKIEROWANIE


include(WWWPHP_DIR.'/applications/cms/doctypes.php');

//sleep(3);



//Timer może być savowany
if ($dm_timer) {
	$timer->setMarker('Stop');
	$profiling = $timer->getProfiling();
	
	//Pokaz timer gdy nie cachujemy strony (w przeciwnym razie, zapisz do pliku - to poniżej) 
	if (!$dm_cache && $dm_showTimer) {
	    $timer->showProfiling($profiling);
	}
}

//include('stats_nocache.php');

if ($dm_useTigra) {
	include(WWWPHP_DIR.'/applications/cms/tigramenu.php');
}

//$XTPL_VARS['STATS']['request_guest_id'] = $r->request_guest_id;
//$XTPL_VARS['STATS']['request_id'] = $r->request_id;













//After DM_Tree we have to call this again for the xtpl_main
$xtpl_main->assign($XTPL_VARS);



//level_1_header, PAGE.level_1_id
foreach ($usertree->pathIds as $k => $v) {
	$xtpl_main->parse("main.level_${k}_header");
}

/*
//print_r($usertree->pathIds);
if ($usertree->level != 1 && $GLOBALS['XTPL_VARS']['PAGE']['header'] != $usertree->info[$usertree->pathIds[1]][$lang]['pageHeader']) {
    $xtpl_main->parse("main.level_-1_header");
}
*/





//Mirek START
// To jest dobre miejsce na testowanie tworzenia menu

//menu bez topperenta
/*
$MENU_ITEMS1 = $usertree->renderTigraMenu(65,false);//Aktualnosci
$MENU_ITEMS2 = $usertree->renderTigraMenu(5,false);//Aktualnosci
$MENU_ITEMS3 = $usertree->renderTigraMenu(5,false);//Aktualnosci
$MENU_ITEMS = "<script>var MENU_ITEMS1= [ $MENU_ITEMS1 ];var MENU_ITEMS2= [ $MENU_ITEMS2 ];var MENU_ITEMS3= [ $MENU_ITEMS3 ];</script>";
*/


//include('suckerfish.php');

if ($GLOBALS['parseLoginJS']) {
    $xtpl_main->parse('main.loginJS');
}


if ($google_maps_used) {
	$xtpl_main->parse('main.google_maps_unload');
}


//Sparsuj odpowiedni fragment kodu GA Google Analytics (production lub development)
if (HOSTING_TYPE == 'YAVIN' || HOSTING_TYPE == 'LOCAL') {
	$xtpl_main->parse('main.GA_development');
} else {
    $xtpl_main->parse('main.GA_production');
}


if ($dm_use_trimmed_jscss) {
	$xtpl_main->parse('main.header_joined_js');
	$xtpl_main->parse('main.joined_css');
	$xtpl_main->parse('main.footer_joined_js');
} else {
	//http://warszawa.kolo2.dynamap.pl/service/trim_js.php
	$xtpl_main->parse('main.header_js_to_join');
	$xtpl_main->parse('main.css_to_join');
	$xtpl_main->parse('main.footer_js_to_join');
}



if ($dm_user_non_registered) {
	$user_nonr = DM_User_Non_Registered::singleton(DMLIB_DIR.'/configs/users_non_registered.ini', $GLOBALS['SQL']['users_non_registered'], null);
	//$user_nonr = new DM_User_Non_Registered(DMLIB_DIR.'/configs/users_non_registered.ini', $GLOBALS['SQL']['users_non_registered'], null);
	
	$user_nonr_id = $user_nonr->updateLastAccess();
	//PS. Gdybyśmy chcieli pobrać ID w innym miejscu (innym skrypcie, ajaxie, etc.): $user_nonr->getUserID();

	
	$xtpl_main->parse('main.user_non_registered');
}

 

//START THE OUTPUT
$xtpl_main->parse('main');
$main_content = $xtpl_main->fetch('main');

if ($dm_tipster) {
	include(MAIN_DIR.'/tipster.php');
}



$draw_text = new DM_Draw_text();
$main_content = $draw_text->getImgFromTag($main_content);
print $main_content;


if ($dm_gemius && file_exists(MAIN_DIR.FILES_EXT.'/gemius.csv') && sizeof($_POST)==0) {
	$pageid = $usertree->pageId;
	$gemius = file_getGemiusArray(MAIN_DIR.FILES_EXT.'/gemius.csv');

	//print_r($gemius);
	foreach ($gemius as $pid=>$GEM) {

		//Mamy w getcie id - bierzemy pod uwage $GEM['id'] z pliku gemiusowego
		if ($_GET['id']) {
		    if ($GEM['pageid'] == $pageid && $GEM['id'] == $_GET['id'] && $GEM['lang'] == $lang) {
				$gemiusFound = true;
				break;
			}

		//Nie mamy w getcie id - nie może istnieć $GEM['id']
		} else {
		    if ($GEM['pageid'] == $pageid && !$GEM['id'] && $GEM['lang'] == $lang) {
				$gemiusFound = true;
				break;
			}
		}
	} //end foreach
}


if ($gemiusFound) {
	$xtpl_gem = new DM_XTemplate (TPL_DIR.'/gemius.tpl');
	$xtpl_gem->assign('GEM', $GEM);
	$xtpl_gem->parse('main');
	echo($xtpl_gem->fetch('main'));;
}




//XCACHE & USERTREE	///////////////////////
//Save XCache files
if ($dm_xcache) xcache_saveCachedFile();
//XCACHE & USERTREE	///////////////////////



//echo memory_get_usage();
unset($output);
unset($draw_text);
unset($xtpl_main);
//??? czy mozna to wlaczyc? co ze statystykami?
//unset($GLOBALS['XTPL_VARS']);
$pageId = $usertree->pageId;
unset($usertree);
//echo("<br>");echo memory_get_usage();




//$DM_Session->destruct();

//exit;
//NO OUTPUT BELOW THIS LINE
//EH


$ob_pageContent = ob_get_contents();
ob_clean();
//print_r($_COOKIE);
//[:::] &->&amp; w urlach
//&amp->&ampamp
//(?![A-z0-9#]+;) - zeby nie operawało na istniejących encjach
//TODO zeby nie operowalo tez na && (np w JavaScriptach)
//$ob_pageContent = preg_replace("/&(?![A-z0-9#]+;)/m",'&amp;',$ob_pageContent);
//$ob_pageContent = '<img src="/_aux/dt/n2/318a48a2544a383614df5f1d0118437c.png" width="145" height="16" name="navit_39" alt="FIRMA" border="0"/>';
$ob_pageContent = preg_replace("/(<img[^>]*[^\/])>/m",'\\1/>',$ob_pageContent);
//< img > -> <img />


if ($dm_trimHTML) {
	$ob_pageContent = str_repeat("\n", 300).string_trimHTMLCode($ob_pageContent);
} else {
	$ob_pageContent = str_replace('<nocompact>', '', $ob_pageContent);
	$ob_pageContent = str_replace('</nocompact>', '', $ob_pageContent);
}


//[:::] Wyciecie domen
//$ob_pageContent = string_cutDomains($ob_pageContent);
//[:::]



//echo(ob_get_length());


include(MAIN_DIR.'/headers.php');


//PRZYGOTUJ ZAWARTOŚĆ START
//(Jeśli włączony cache, to nawet jeśli nieaktywne $dm_gzdoc, to i tak savuj część gzipowaną)
if ($dm_gzdoc || $dm_cache) {
	//Zamień placeholder inserta dla rozszerzeń zgzipowanych w plikach css / js
	$ob_pageContentGZ = str_replace($GLOBALS['CACHE']['gzip_ext_insert_placeholder'], $GLOBALS['CACHE']['gzip_ext_insert'], $ob_pageContent);
	$ob_pageContentGZ = $ob_pageContentGZ.'<!-- GZ -->';
	//$contentLength = strlen($ob_pageContentGZ);
	$ob_pageContentGZ = gzencode($ob_pageContentGZ, 9);
	$gzContentLength = strlen($ob_pageContentGZ);
}

//BEZ gzipowania
//(Wykonaj jedynie jeśli włączony cache - bo wtedy do savowania potrzebujemy LUB jeśli nie dm_gzdoc)
//Czyli jeśli nie włączony cache i jest gzipowanie, to nie ma sensu tej podmianki robić
if ($dm_cache || !$dm_gzdoc) {
	//Tutaj nie mamy gzipowania - czyli usuń całkowicie placeholder 
	$ob_pageContent = str_replace($GLOBALS['CACHE']['gzip_ext_insert_placeholder'], '', $ob_pageContent);
	$contentLength = strlen($ob_pageContent);
}
//PRZYGOTUJ ZAWARTOŚĆ STOP


//SERWUJ ZAWARTOŚĆ
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')   !== false) $HTTP_ACCEPT_ENCODING = 'gzip';
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false) $HTTP_ACCEPT_ENCODING = 'x-gzip';
if ($HTTP_ACCEPT_ENCODING && $dm_gzdoc) {
	header("Content-Encoding: $HTTP_ACCEPT_ENCODING");
	header("Content-Length: ".$gzContentLength);
	$pageType = 'GZIP NOT CACHED';
	print ($ob_pageContentGZ);
} else {
	header("Content-Length: ".$contentLength);
    $pageType = 'HTML NOT CACHED';
	print ($ob_pageContent);
}


if ($dm_timer) {
	$timer->saveTxtProfiling($profiling, $pageType, $pageId);
}

//


//print_r($GLOBALS['XTPL_VARS']['META']);


//CACHE EXCEPTIONS
if ($_GET['err'] == '404' || $usertree->textId == 'cart' || in_array($usertree->pageId, (array) $GLOBALS['CACHE']['ignore_pageids'])) {
	unset($cachedFileName);
}

if ($dm_cache && empty($_POST) && $cachedFileName) {
	cache_saveCachedFile($cachedFileName, $ob_pageContent, $ob_pageContentGZ, $_arCachedFileName);
} 


//include('stats_nocache.php');



?>