<?php

//header('https://uj.webstilus.hu'); die();

//bootstrap

require_once('serverconfig.php');
require_once('modules/particle_storage_v2/ParticleRuntimeStorage.php');
$GLOBALS['css'] = '';
$GLOBALS['js'] = '';
$GLOBALS['language'] = 1;
$GLOBALS['languageprefix'] = 'hu';
$GLOBALS['version'] = 1;
define('PAGINATION', '25');

// $fp = fopen('log.html', 'a');
// fwrite($fp, '<html lang="hu"><head><title>Webstilus.hu</title><meta charset="utf-8"></head><body>');
// fclose($fp);

// $_GET['reset'] = 1;

if (isset($_GET['reset'])) {
    unset($_SESSION['userid']);
    unset($_SESSION['activemenu']);    
}

//controller

//print_r($p);unset($_SESSION);
if ($p[0] == 'administrator')
{
    echo coreController($p);
    
    die();
}

if ($_POST) {
    dbQuery("SET NAMES utf8mb4", 0);
    //print_r($_POST);
	foreach ($_POST as $key=>$value)
	{
		if (!is_array($_POST[$key]))
		{
			$_POST[$key] = htmlspecialchars($value);
		}
		else
		{
			$postarray = array();
			foreach ($_POST[$key] as $postkey=>$postvalue)
			{
				$postarray[] = htmlspecialchars($postvalue);
			}
			$_POST[$key] = $postarray;
		}				
	}
	
	$_POST['p'] = str_replace('&quot;','"',$_POST['p']);	
	$_POST['p'] = json_decode($_POST['p']);
	//$_POST['p']['allparameters'] = $p;

	try {
	    require_once(__DIR__.'/modules/website_access/DashboardRequestGuard.php');
	    DashboardRequestGuard::check(isset($_POST['a']) ? $_POST['a'] : '', $_POST['p']);
	} catch (Throwable $accessError) {
	    echo json_encode(array('ok' => false, 'error' => $accessError->getMessage()));
	    die();
	}
	
	//print_r($p);
	
	switch ($_POST['a']) {
            case 'recaptcha':  
//                var_dump($_POST);
                $url = "https://www.google.com/recaptcha/api/siteverify";
                $response = $_POST['p']->response;
                $secret = "6LcXkp4hAAAAAGOLUyHY3P9a6ebvmPDpbHYGtSgL"; // you add secret key server side
                $params = array('secret'=> $secret, 'response'=> $response);
                echo file_get_contents( $url  . '?secret=' . $secret . '&response=' . $response);
                die;
                break;
	    case 'blogsave':
	        $saveParameters = array(
	        'datetime'			=> $_POST['p']->datetime,
	        'title'				=> $_POST['p']->title,
	        'content'			=> $_POST['p']->content,
	        'website'           => $_POST['p']->websiteid
	        );
	        
	        if (!empty($_POST['p']->id)) {
	            $saveParameters['id'] = $_POST['p']->id;
	        }
	        
	        $querySql = getSaveSQL(DBPREFIX.'blog', $saveParameters);
	        $id = dbQuery($querySql[0],3,$querySql[1]);
	        
	        require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
	        $myClass = new webstilus_dashboard($_POST['p']);
	        $_SESSION['refresh'] = true;
	        echo json_encode($myClass->getOutput($_SESSION['activemenu']));
	        
	        break;
	    case 'login':
	        $loginPassword = html_entity_decode((string)$_POST['p']->password, ENT_QUOTES | ENT_HTML5, 'UTF-8');
	        $query = 'SELECT u.id, u.hash, u.groupid FROM '.DBPREFIX.'users u WHERE u.email=? LIMIT 1';
	        $queryParameters = array($_POST['p']->email);
	        $user = getData($query, $queryParameters, false);
	        
	        if (isset($user[0]['hash']))
	        {
	            //if (crypt($_POST['password'], $user[0]['hash']) == $user[0]['hash'])
            if (verifyUserPassword($user[0]['id'], $loginPassword, $user[0]['hash']))
	            {	                
	                session_regenerate_id(true);
	                $_SESSION['userid'] = $user[0]['id'];	               
	                
	                /*$cost = 10;
	                $salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
	                $salt = sprintf("$2a$%02d$", $cost) . $salt;
	                
	                $hash = crypt($_POST['password'], $salt);*/
	                
	                /*$query = 'UPDATE '.DBPREFIX.'users u SET hash=? WHERE u.id=? LIMIT 1';
	                $queryParameters = array($hash, $_SESSION['userid']);
	                dbQuery($query, 0, $queryParameters);*/
	                
	                echo '1';
	                die();
	            }
	        }
	        
	        echo '0';
	        break;
	    case 'getpreviewlink':
	        $query = 'SELECT folder FROM '.DBPREFIX.'websites WHERE id=? LIMIT 1';
	        $queryParameters = array($_POST['p']->id);
	        $pdata = getData($query, $queryParameters, false);
	        
	        echo json_encode(array(BASEURL.substr($pdata[0]['folder'],strlen(DOCROOT)+1).'/fooldal.html'));
	        
            die();
	        break;
	    case 'getcssvalue':
	        $particleStorage = new ParticleRuntimeStorage($pdo);
	        $activeMenu = isset($_SESSION['activemenu']) ? (int)$_SESSION['activemenu'] : 0;
	        $websiteId = $particleStorage->websiteIdForMenu($activeMenu);
	        $value = $particleStorage->parameterValue($websiteId, (int)$_POST['p']->particle, (string)$_POST['p']->value, 0, '');
	        echo json_encode(array($value));
	        
	        die();
	        break;
	    case 'logout':
	        unset($_SESSION['userid']);
	        unset($_SESSION['activemenu']);

            $_SESSION['message']['text'] = 'Sikeres kijelentkezés!';
            $_SESSION['message']['color'] = '1';
            	
            echo '1';
            die();
	        break;
	    case 'registration':
	        $registrationPassword = html_entity_decode((string)$_POST['p']->regpassword, ENT_QUOTES | ENT_HTML5, 'UTF-8');
	        if (strlen($registrationPassword) < 10) {
	            echo '3';
	            die();
	        }
	        $query = 'SELECT u.id FROM '.DBPREFIX.'users u WHERE u.email=? LIMIT 1';
	        $queryParameters = array($_POST['p']->regemail);
	        $user = getData($query, $queryParameters, false);
	        	        
	        if (isset($user[0]['id']))
	        {	            
	            echo '2';
	            die();	            
	        }
	        /*
	        $cost = 10;
	        $salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
	        $salt = sprintf("$2a$%02d$", $cost) . $salt;
	        
	        $hash = crypt($_POST['p']['regpassword'], $salt);*/
	                
	        $hash = password_hash($registrationPassword, PASSWORD_DEFAULT);
	        
	        $saveParameters = array(
	            'name'				=> $_POST['p']->regname,
	            'email'				=> $_POST['p']->regemail,
	            'hash'				=> $hash,
	            'status'			=> 1,
	            'groupid'			=> 2,	            
	            'lostpasswordhash'	=> generateRandomString()
	        );
	        
	        $querySql = getSaveSQL(DBPREFIX.'users', $saveParameters);
	        $id = dbQuery($querySql[0],3,$querySql[1]);
	        
	        $content = '<br /><br />
						Ön sikeresen regisztrált a webstilus.hu-ra!
						<br />
						Az Ön belépési adatai:<br />
						<br />
						Email cím: ' . str_replace('.','<span>.</span>',str_replace('@','<span>@</span>',$_POST['p']->regemail)) . '<br />
						Jelszó: ' . $_POST['p']->regpassword . '<br />
						<br />
						Köszönjük, hogy megtisztelt minket bizalmával!<br />
						<br />
						Üdvözlettel:<br />
						<br />
						webstilus<span>.</span>hu
						';
	        
	        $saveParameters = array(
	            'toemail'		=> $_POST['p']->regemail,
	            'toname'		=> 'Tisztelt '.$_POST['p']->regname.'!',
	            'fromemail'		=> 'noreply@webstilus.hu',
	            'subject'		=> 'Sikeres regisztráció',
	            'type'			=> 'Regisztráció',
	            'content'		=> $content,
	            'hash'			=> generateRandomString(32),
	            'status'		=> 1
	        );
	        
	        $querySql = getSaveSQL(DBPREFIX.'mail', $saveParameters);
	        dbQuery($querySql[0],0,$querySql[1]);
	        
	        $_SESSION['userid'] = $id;	        
	        $_SESSION['message']['text'] = 'Sikeres regisztráció!';
	        $_SESSION['message']['color'] = '1';	        
	        
	        echo '1';
	        die();			
	        break;
	    case 'lostpassword':
	        $query = 'SELECT * FROM '.DBPREFIX.'users u WHERE u.email=? LIMIT 1';
	        $queryParameters = array($_POST['p']->lostpasswordemail);
	        $user = getData($query, $queryParameters, false);
	        
	        if (!isset($user[0]['id']))
	        {
	            echo '2';
	            die();
	        }
	        
	        $password = generateRandomString(8);
	        
	        $hash = password_hash($password, PASSWORD_DEFAULT);
	        
	        $saveParameters = array(
	            'email'				=> $_POST['p']->lostpasswordemail,
	            'hash'				=> $hash
	        );
	        
	        $querySql = getSaveSQL(DBPREFIX.'users', $saveParameters);
	        $id = dbQuery($querySql[0],3,$querySql[1]);
	        
	        $content = '<br /><br />
						Ön új jelszót igényelt a webstilus.hu portálon!
						<br />
						Az Ön belépési adatai:<br />
						<br />
						Email cím: ' . str_replace('.','<span>.</span>',str_replace('@','<span>@</span>',$_POST['p']->lostpasswordemail)) . '<br />
						Jelszó: ' . $password . '<br />
						<br />
						Üdvözlettel:<br />
						<br />
						webstilus<span>.</span>hu
						';
	        
	        $saveParameters = array(
	            'toemail'		=> $_POST['p']->lostpasswordemail,
	            'toname'		=> 'Tisztelt '.$user[0]['name'].'!',
	            'fromemail'		=> 'noreply@webstilus.hu',
	            'subject'		=> 'Új jelszó',
	            'type'			=> 'Új jelszó',
	            'content'		=> $content,
	            'hash'			=> generateRandomString(32),
	            'status'		=> 1
	        );
	        
	        $querySql = getSaveSQL(DBPREFIX.'mail', $saveParameters);
	        dbQuery($querySql[0],0,$querySql[1]);
	        
	        $_SESSION['message']['text'] = 'Sikeres küldés!';
	        $_SESSION['message']['color'] = '1';
	        
	        echo '1';
	        die();
	        break;
	    case 'profilesave':
	        $profilePassword = html_entity_decode((string)$_POST['p']->password, ENT_QUOTES | ENT_HTML5, 'UTF-8');
	        if ((WebsiteAccess::mustChangePassword() && strlen($profilePassword) < 10)
	            || ($profilePassword !== '' && strlen($profilePassword) < 10)) {
	            echo '3';
	            die();
	        }
	        $query = 'SELECT u.id FROM '.DBPREFIX.'users u WHERE u.email=? LIMIT 1';
	        $queryParameters = array($_POST['p']->email);
	        $user = getData($query, $queryParameters, false);
	        
	        if (isset($user[0]['id']) && $_SESSION['userid'] != $user[0]['id']) {
	           echo '2';
	           die();
	        }

	        $saveParameters = array(
	            'id'               => $_SESSION['userid'],
	            'name'             => $_POST['p']->name,
	            'email'            => $_POST['p']->email,
	            'billingname'      => $_POST['p']->billingname,
	            'billingaddress'   => $_POST['p']->billingaddress,
	            'vatnumber'        => $_POST['p']->vatnumber,
	        );
	        
	        if ($profilePassword != '') {
	            $hash = password_hash($profilePassword, PASSWORD_DEFAULT);
	            $saveParameters['hash'] = $hash;
	        }
	        
	        $querySql = getSaveSQL(DBPREFIX.'users', $saveParameters);
	        $id = dbQuery($querySql[0],3,$querySql[1]);
	        if ($profilePassword != '' && WebsiteAccess::tableExists('user_security')) {
	            $security = $pdo->prepare('INSERT INTO '.DBPREFIX.'user_security (user_id,must_change_password,password_changed_at,created_at,updated_at) VALUES (?,0,NOW(),NOW(),NOW()) ON DUPLICATE KEY UPDATE must_change_password=0,password_changed_at=NOW(),updated_at=NOW()');
	            $security->execute(array($_SESSION['userid']));
	        }

	        $_SESSION['userid'] = $id;
	        $_SESSION['message']['text'] = 'Sikeres mentés!';
	        $_SESSION['message']['color'] = '1';
	        
	        echo '1';
	        die();
	        break;
	    case 'load':
		    if (isset($_SESSION['userid'])) {
    		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
    		    $myClass = new webstilus_dashboard($_POST['p']);
    		    
    		    //print_r($_POST);
    		    //echo $_SESSION['activemenu'];
    		    //unset($_SESSION['activemenu']);
    		    if (isset($_POST['p']->websiteid)) {
    		        if (isset($_POST['p']->delete)) {
    		            $myClass->deleteWebsite($_POST['p']->delete);
    		            $mid = $myClass->getFirstMenu();
    		            unset($_SESSION['activemenu']);
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput($mid));
    		            //$_SESSION['activemenu'] = $myClass->mid;
    		            $_SESSION['message']['text'] = 'Sikeres törlés!';
    		            $_SESSION['message']['color'] = '1';
    		            //oldal újratöltése
    		            die();
    		        } else if (isset($_POST['p']->deletemenu)) {
    		            $myClass->deleteMenu($_POST['p']->deletemenu);
    		            /* $mid = $myClass->getFirstMenu();
    		            unset($_SESSION['activemenu']);*/
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput($_SESSION['activemenu']));
    		            //$_SESSION['activemenu'] = $myClass->mid;
    		            $_SESSION['message']['text'] = 'Sikeres törlés!';
    		            $_SESSION['message']['color'] = '1';
    		            //oldal újratöltése
    		            die();
    		        } else if (isset($_POST['p']->mname)) {
    		            //$mid = $myClass->getFirstMenu();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            //$_SESSION['activemenu'] = $myClass->mid;
    		            $_SESSION['message']['text'] = 'Sikeres létrehozás!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->domainname)) {
    		            //$mid = $myClass->getFirstMenu();
    		            $myClass->addDomain();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            //$_SESSION['activemenu'] = $myClass->mid;
    		            $_SESSION['message']['text'] = 'Sikeres hozzárendelés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->eucookietext)) {
    		            //$mid = $myClass->getFirstMenu();
    		            $myClass->addEuCookie();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            //$_SESSION['activemenu'] = $myClass->mid;
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->euimage)) {
    		            //$mid = $myClass->getFirstMenu();
    		            $myClass->addEuImage();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            //$_SESSION['activemenu'] = $myClass->mid;
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->customwebsitecss)) {
    		            //$mid = $myClass->getFirstMenu();
    		            $myClass->addCustomWebsiteCss();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            //$_SESSION['activemenu'] = $myClass->mid;
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->analyticscode)) {
    		            //$mid = $myClass->getFirstMenu();
    		            $myClass->addAnalytics();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            //$_SESSION['activemenu'] = $myClass->mid;
    		            $_SESSION['message']['text'] = 'Sikeres hozzárendelés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->messageemail)) {
    		            $myClass->addMessageEmail();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->messagename)) {
    		            $myClass->addMessageName();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->messagesmtpsecure)) {
    		            $myClass->addMessageSMTPSecure();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->messagehost)) {
    		            $myClass->addMessageHost();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->messageport)) {
    		            $myClass->addMessagePort();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->messageusername)) {
    		            $myClass->addMessageUsername();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->messagepassword)) {
    		            $myClass->addMessagePassword();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else if (isset($_POST['p']->messagesubject)) {
    		            $myClass->addMessageSubject();
    		            $_SESSION['refresh'] = true;
    		            echo json_encode($myClass->getOutput());
    		            $_SESSION['message']['text'] = 'Sikeres mentés!';
    		            $_SESSION['message']['color'] = '1';
    		        } else {
    		            //$mid = $myClass->getFirstMenu();
    		            echo json_encode($myClass->getOutput());
        		        //$_SESSION['activemenu'] = $myClass->mid;
    		        }
    		    } else if (isset($_SESSION['activemenu'])) {
    		        echo json_encode($myClass->getOutput($_SESSION['activemenu']));
    		    } else {	
    		        //new website load
    		      $mid = $myClass->getFirstMenu();
    		      if ($mid == 0) {
    		          echo json_encode($myClass->getOutput($mid));
    		      } else {
    		          echo json_encode($myClass->getOutput($mid));
    		          $_SESSION['activemenu'] = $myClass->mid;
    		      }
    		    }
		    }
		    else {
		        echo json_encode(array());
		    }
		   
			break;	
		case 'showtemplates':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);		    
		    echo json_encode($myClass->getTemplateSelector());
		    break;
		case 'showprofileform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getProfileForm());
		    break;
		case 'showaddwebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getAddWebsiteForm());
		    break;
		case 'showdeletewebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getDeleteWebsiteForm());
		    break;
		case 'showdomainwebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getDomainWebsiteForm());
		    break;
		case 'showeucookieform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getEuCookieForm());
		    break;
		case 'showeuwebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getEuWebsiteForm());
		    break;
		case 'showcustomwebsitecssform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getCustomWebsiteCssForm());
		    break;
		case 'showanalyticswebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getAnalyticsWebsiteForm());
		    break;		
		case 'showmessageemailwebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getMessageEmailWebsiteForm());
		    break;				
		case 'showmessagenamewebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getMessageNameWebsiteForm());
		    break;
		case 'showmessagesmtpsecurewebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getMessageSMTPSecureWebsiteForm());
		    break;		
		case 'showmessagehostwebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getMessageHostWebsiteForm());
		    break;
		case 'showmessageportwebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getMessagePortWebsiteForm());
		    break;
		case 'showmessageusernamewebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getMessageUsernameWebsiteForm());
		    break;
		case 'showmessagepasswordwebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getMessagePasswordWebsiteForm());
		    break;
		case 'showmessagesubjectwebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getMessageSubjectWebsiteForm());
		    break; 
		case 'showdeletemenuform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getDeleteMenuForm());
		    break;
		case 'shownewmenuselectionform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getNewMenuSelectionForm());
		    break;
		case 'shownewmenuform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getNewMenuForm());
		    break;
		case 'showpublishwebsiteform':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getPublishWebsiteForm());
		    break;
		case 'showfullhtmleditor':
		case 'fullhtmlsave':
		case 'fullhtmlversion':
		case 'fullhtmlimport':
		case 'fullhtmlexportai':
		case 'fullhtmlpublish':
		    require_once('modules/full_html_editor/controller.php');
		    echo json_encode(fullHtmlEditorAction($_POST['a'], $_POST['p']));
		    break;
		case 'showwebsitemembers':
		case 'savewebsitemember':
		case 'removewebsitemember':
		    try {
		        require_once('modules/website_members/WebsiteMembers.php');
		        $memberResult = websiteMembersAction($_POST['a'], $_POST['p']);
		        if ($_POST['a'] === 'showwebsitemembers') {
		            echo json_encode($memberResult);
		        } else {
		            echo json_encode(array_merge(array('ok' => true), $memberResult));
		        }
		    } catch (Throwable $error) {
		        echo json_encode(array('ok' => false, 'error' => $error->getMessage()));
		    }
		    break;
		case 'showmediamanager':
		case 'mediaupload':
		case 'mediadelete':
		    try {
		        require_once('modules/media_manager/MediaManager.php');
		        $mediaResult = mediaManagerAction($_POST['a'], $_POST['p'], $_FILES);
		        if ($_POST['a'] === 'showmediamanager') {
		            echo json_encode($mediaResult);
		        } else {
		            echo json_encode(array_merge(array('ok' => true), $mediaResult));
		        }
		    } catch (Throwable $error) {
		        echo json_encode(array('ok' => false, 'error' => $error->getMessage()));
		    }
		    break;
		case 'publishwebsite':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->publishWebsite());
		    break;
		case 'setparticlecss':			
			require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
			$myClass = new webstilus_dashboard($_POST['p']);
			$myClass->setParticleCss();
			echo json_encode($myClass->getOutput($_SESSION['activemenu']));
			break;
		case 'masssetparticlecss':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->massSetParticleCss();
		    echo json_encode($myClass->getOutput($_SESSION['activemenu']));
		    break;
		case 'setuniqueparticlecss':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->setUniqueParticleCss($_SESSION['activemenu']);
		    echo json_encode($myClass->getOutput($_SESSION['activemenu']));
		    break;
		case 'setmenucss':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->setMenuCss();
		    echo json_encode($myClass->getOutput($_SESSION['activemenu']));
		    break;
		case 'addparticle':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->addParticle();
		    echo json_encode($myClass->getOutput($myClass->mid));
		    $_SESSION['activemenu'] = $myClass->mid;
		    break;
		case 'deleteparticle':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->deleteParticle();
		    echo json_encode($myClass->getOutput($myClass->mid));
		    $_SESSION['activemenu'] = $myClass->mid;
		    break;
		case 'setcsspicker':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getCssPicker($_POST['p']->id, $_SESSION['activemenu'], $_POST['p']->websiteparticle));
		    break;
		case 'setblogedit':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    echo json_encode($myClass->getBlogEdit($_POST['p']->id));
		    break;
		case 'movemenu':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->moveMenu($_POST['p']->menuid, $_POST['p']->position);
		    echo json_encode($myClass->getOutput($_SESSION['activemenu']));
		    break;
		case 'menusavebasedata':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->saveMenu($_POST['p']->menuid, $_POST['p']->menuname, $_POST['p']->menuurl, $_POST['p']->menutitle, 
		        $_POST['p']->menudescription, $_POST['p']->menustatus, $_POST['p']->menuparent, $_POST['p']->menupopuphtml);
		    $_SESSION['menusaved'] = true;
		    $_SESSION['refresh'] = true;
		    echo json_encode($myClass->getOutput($_SESSION['activemenu']));

		    if ($_POST['p']->menustatus == 0) {
		      $_SESSION['message']['text'] = 'Sikeres törlés!';
		      $_SESSION['message']['color'] = '1';
		    } else {
		      $_SESSION['message']['text'] = 'Sikeres mentés!';
		      $_SESSION['message']['color'] = '1';
		    }
		    break;
		case 'particlegoup':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->particleGoUp();
		    echo json_encode($myClass->getOutput($_SESSION['activemenu']));
		    break;
		case 'particlegodown':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->particleGoDown();
		    echo json_encode($myClass->getOutput($_SESSION['activemenu']));
		    break;
		case 'addpdf':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->getOutput($_SESSION['activemenu']);
		    
		    //echo $_FILES["f"]["name"] . ' ---- ';
		    $imageFileType = strtolower(pathinfo($_FILES["f"]["name"],PATHINFO_EXTENSION));
		    //echo $imageFileType;
		    
		    if (!file_exists("websites/" . $myClass->wname .'/')){
		        mkdir("websites/" . $myClass->wname .'/');
		    }
		    
		    $bytes = openssl_random_pseudo_bytes(16);
		    $newName = bin2hex($bytes) .'.'.$imageFileType;
		    
		    $target_dir = "websites/".$myClass->wname."/";
		    $target_file = $target_dir . basename($newName);
		    $uploadOk = 1;
		    		  
		    if ($_FILES["f"]["size"] > 24000000) {
		      echo "Sorry, your file is too large.";
		      $uploadOk = 0;
		    }
		    // Allow certain file formats
		    if ($imageFileType != "pdf" ) {
		            echo "Sorry, only PDF files are allowed.";
		            $uploadOk = 0;
		        }
		        // Check if $uploadOk is set to 0 by an error
		        if ($uploadOk == 0) {
		            echo "Sorry, your file was not uploaded.";
		            // if everything is ok, try to upload file
		        } else {
		            if (move_uploaded_file($_FILES["f"]["tmp_name"], $target_file)) {
		                if ($imageFileType == 'pdf') {
		                    //echo json_encode(array('filename' => $newName));
		                    $myClass->parameters->value = $target_file;
		                    $myClass->setParticleCss();
		                    echo json_encode($myClass->getOutput($_SESSION['activemenu']));
		                }
		                //echo "The file ". basename( $_FILES["f"]["name"]). " has been uploaded.";
		            } else {
		                //echo "Sorry, there was an error uploading your file.";
		            }
		        }
		        break;
		case 'addimage':
		    require_once('modules/webstilus_dashboard/webstilus_dashboard.php');
		    $myClass = new webstilus_dashboard($_POST['p']);
		    $myClass->getOutput($_SESSION['activemenu']);
		    
		    //echo $_FILES["f"]["name"] . ' ---- ';
		    $imageFileType = strtolower(pathinfo($_FILES["f"]["name"],PATHINFO_EXTENSION));
		    //echo $imageFileType;
		    
		    if (!file_exists("websites/" . $myClass->wname .'/')){
		        mkdir("websites/" . $myClass->wname .'/');
		    }
		    
		    $bytes = openssl_random_pseudo_bytes(16);
		    $newName = bin2hex($bytes) .'.'.$imageFileType;
		    
		    $target_dir = "websites/".$myClass->wname."/";
		    $target_file = $target_dir . basename($newName);
		    $uploadOk = 1;
		    
// 		    echo $imageFileType;
		    // Check if image file is a actual image or fake image

    	    $check = getimagesize($_FILES["f"]["tmp_name"]);
    	    if($check !== false) {
    	         //echo "File is an image - " . $check["mime"] . ".";
    	         $uploadOk = 1;
    	    } else {
    	         //echo "File is not an image.";
    	         $uploadOk = 0;
    	    }
		    // Check if file already exists
		    /*if (file_exists($target_file)) {
		        echo "Sorry, file already exists.";
		        $uploadOk = 0;
		    }*/
		    // Check file size
		    /*if ($_FILES["fileToUpload"]["size"] > 3000000) {
		        echo "Sorry, your file is too large.";
		        $uploadOk = 0;
		    }*/
		    // Allow certain file formats
		    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
		        && $imageFileType != "gif" ) {
		            echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
		            $uploadOk = 0;
		        }
		        // Check if $uploadOk is set to 0 by an error
		        if ($uploadOk == 0) {
		            echo "Sorry, your file was not uploaded.";
		            // if everything is ok, try to upload file
		        } else {
		            if (move_uploaded_file($_FILES["f"]["tmp_name"], $target_file)) {
		                if ($imageFileType == 'jpg') {
		                    $source = imagecreatefromjpeg($target_file);
		                    imageinterlace($source, 1);
		                    
		                    imagejpeg($source, DOCROOT . '/'. $target_file, 60);
		                    imagedestroy($source);		                 
		                    //echo json_encode(array('filename' => $newName));
		                    if (substr($myClass->parameters->key,0,5) == 'image') {
		                        $myClass->parameters->websiteparticle = $myClass->parameters->particle;
		                        $myClass->parameters->pvalue = $target_file;
		                        $myClass->parameters->pdefinition = '.sliderdiv'.$myClass->parameters->particle; 
		                        $myClass->parameters->pkey = $myClass->parameters->key;
		                        $myClass->parameters->particle = 7;
		                        $myClass->setUniqueParticleCss($_SESSION['activemenu']);
		                    } else {
    		                    if ($myClass->parameters->type != 4) {
    		                      $myClass->parameters->value = 'url("'.$target_file.'")';
    		                    } else {
    		                        $myClass->parameters->value = $target_file;
    		                    }
    		                    if ($myClass->parameters->particle == ' ') {
    		                      $myClass->setMenuCss();
    		                    } else {
    		                      $myClass->setParticleCss();
    		                    }
		                    }
		                    echo json_encode($myClass->getOutput($_SESSION['activemenu']));
		                } else if ($imageFileType == 'png') {		                   
		                    //echo json_encode(array('filename' => $newName));
		                    if (substr($myClass->parameters->key,0,5) == 'image') {
		                        $myClass->parameters->websiteparticle = $myClass->parameters->particle;
		                        $myClass->parameters->pvalue = $target_file;
		                        $myClass->parameters->pdefinition = '.sliderdiv'.$myClass->parameters->particle;
		                        $myClass->parameters->pkey = $myClass->parameters->key;
		                        $myClass->parameters->particle = 7;
		                        $myClass->setUniqueParticleCss($_SESSION['activemenu']);
		                    } else {
		                        if ($myClass->parameters->type != 4) {
		                            $myClass->parameters->value = 'url("'.$target_file.'")';
		                        } else {
		                            $myClass->parameters->value = $target_file;
		                        }
		                        if ($myClass->parameters->particle == ' ') {
		                            $myClass->setMenuCss();
		                        } else {
		                            $myClass->setParticleCss();
		                        }
		                    }
		                    echo json_encode($myClass->getOutput($_SESSION['activemenu']));
		                }
		                //echo "The file ". basename( $_FILES["f"]["name"]). " has been uploaded.";
		            } else {
		                //echo "Sorry, there was an error uploading your file.";
		            }
		        }
		    break;	
	}
	die();
}

if (isset($_SESSION['message']['text']))
{
    $GLOBALS['lastjs'] .= '<script>
        
	$(document).ready(function() {
		systemMessage("'.$_SESSION['message']['text'].'", "'.$_SESSION['message']['color'].'", event);
	});
		    
	</script>';
    
    unset($_SESSION['message']['text']);
    unset($_SESSION['message']['color']);
}

/*
$query = 'SELECT t.name FROM '.DBPREFIX.'templates t WHERE t.id =?';
$queryParameters = array($menu[0]['templateid']);
$output = getData($query, $queryParameters, false);*/

//echo $p[0]; die();

//email webes megjelenés
if ($p[0] == 'email') {
    $query = 'SELECT id, toemail, toname, subject, hash, content FROM mail WHERE hash=? ORDER BY id DESC LIMIT 0,1 ';
    $queryParameters = array($p[1]);
    $result = getData($query, $queryParameters, false);
    
    foreach ($result as $row)
    {
        if (file_exists(DOCROOT.'/templates/mail.html'))
        {
            $body = file_get_contents(DOCROOT.'/templates/mail.html');
        }
        
       
        $body = str_replace('HASH',BASEURL."emailtracking.php?id=".$row['hash'],$body);
        $body = str_replace('LINKHSH',BASEURL."email/".$row['hash'],$body);
        
        //$body = str_replace('HASH',$row['hash'],$body);
        $body = str_replace('MAILTOP',$row['subject'],$body);
        $body = str_replace('NAME',$row['toname'],$body);
        $body = str_replace('CONTENT',$row['content'],$body);
        
        echo $body;
    }
    
    die();
}

if (!isset($_SESSION['userid'])) {
    if ($p[0]) {       
        $output = addVariables(file_get_contents(DOCROOT.'static.html'));
        //$content = file_get_contents(DOCROOT.$p[0].'.html');
        $query = 'SELECT title, content FROM articles WHERE alias=? ORDER BY id DESC LIMIT 0,1 ';
        $queryParameters = array($p[0]);
        $result = getData($query, $queryParameters, false);
        if (!empty($result[0])) {
            $content = '<h1 style="font-size: 22px; margin-bottom: 30px;">'.$result[0]['title'].'</h1>'.$result[0]['content'];
            $output = str_replace('CONTENT',$content,$output);
        }
    }
    else {
        $output = addVariables(file_get_contents(DOCROOT.'home.html'));
    }
    $GLOBALS['lastjs'] .= '<script>
        
	var loggedin = 0;
        
	</script>';
} else {
    $output = addVariables(file_get_contents(DOCROOT.'template.html'));
    $GLOBALS['lastjs'] .= '<script>
        
	var loggedin = 1;
		    
	</script>';
}

$js = addVariables(file_get_contents(DOCROOT.'site.js'));
$js .= addVariables(file_get_contents(DOCROOT.'animations.js'));
$js .= addVariables(file_get_contents(DOCROOT.'slick.js'));
//$js .= file_get_contents(DOCROOT.'jscolor.min.js');
$output = str_replace('<!-- [javascript] -->','<script>' . $js . '</script>',$output);

if (isset($GLOBALS['lastjs']))
{
    $output = str_replace('<!-- [LASTJAVASCRIPT] -->',$GLOBALS['lastjs'], $output);
}	

$css = addVariables(file_get_contents(DOCROOT.'site.css'));
$css .= addVariables(file_get_contents(DOCROOT.'nav.css'));
$css .= file_get_contents(DOCROOT.'fontello.css');
$output = str_replace('<!-- [style] -->','<style>' . $css . '</style>',$output);

echo $output;

function coreController($p)
{
    //$GLOBALS['queries'][] = '1. pont';
    foreach ($_POST as $key=>$value)
    {
        if (!is_array($_POST[$key]))
        {
            $_POST[$key] = htmlspecialchars($value);
        }
        else
        {
            $postarray = array();
            foreach ($_POST[$key] as $postkey=>$postvalue)
            {
                $postarray[] = htmlspecialchars($postvalue);
            }
            $_POST[$key] = $postarray;
        }
    }    
    
    $GLOBALS['dictionary'] = array();
    
    $GLOBALS['url'] = $p;
    
    $hasCookie = true;
    
    if (isset($_POST['language']))
    {
        //$GLOBALS['queries'][] = '2. pont';
        setcookie('language', $_POST['language'], time()+60*60*24*30,'/');
        $_COOKIE['language'] = $_POST['language'];
        $_POST = array();
        $hasCookie = false;
    }
    
    /*detectLanguage($p[0], $hasCookie);*/
    
    /*if ($GLOBALS['language'] != DEFAULT_LANGUAGE)
    {
        //$GLOBALS['queries'][] = '3. pont';
        array_shift($p);
        if (sizeof($p) == 0)
        {
            $p[0] = '';
        }
    }*/
    
    //echo '<p style="color: #FFF;">'.$GLOBALS['language'].'</p>';
    
    //$GLOBALS['queries'][] = '4. pont';
    
    /*require_once('lang/'.$GLOBALS['languageprefix'].'.php');
    $GLOBALS['dictionary'] = array_merge($GLOBALS['dictionary'], $coreDictionary);*/
    
    require_once('lang/'.$GLOBALS['languageprefix'].'.php');
    $GLOBALS['dictionary'] = array_merge($GLOBALS['dictionary'], $coreDictionary);
    
    //ajax file upload
    if (isset($_SERVER['HTTP_X_INDEX']))
    {
        //$GLOBALS['queries'][] = '5. pont';
        $fnName = 'mod_webstilus_dashboard';
        require_once('modules/'.$fnName.'/'.$fnName.'.php');
        $output = call_user_func($fnName, array());
    }
    
    // ajax login/logout check/cart    
    
    $moduleHash = '';

    // basic menu check
    if (sizeof($p) > 0)
    {        
        $alias = $p[1];
        
        $query = 'SELECT m.type, m.id, m.templateid, m.title, m.description FROM '.DBPREFIX.'admin_menus m WHERE m.language=? AND m.alias=?';
        $queryParameters = array($GLOBALS['language'], $alias);
        $menu = getDataOld($query, 'menu-'.$alias, $queryParameters);
        
        if (!$menu)
        {
            header('Location: '.getLink(''));
            die();
        }
        
        if (!isset($output))
        {
            $query = 'SELECT t.name FROM '.DBPREFIX.'admin_templates t WHERE t.id =?';
            $queryParameters = array($menu[0]['templateid']);
            $template = getDataOld($query, 'templates_name:'.$menu[0]['templateid'], $queryParameters, false);
            
            $output = file_get_contents(DOCROOT.'/templates/'.$template[0]['name'].'.html');
            if (file_exists(DOCROOT.'/templates/css/'.$template[0]['name'].'.css'))
            {
                $GLOBALS['css'] .= file_get_contents(DOCROOT.'/templates/css/'.$template[0]['name'].'.css');
            }
        }
        
        $query = 'SELECT tmx.moduleid, tmx.position FROM '.DBPREFIX.'admin_templatesmodulesxref tmx WHERE tmx.templateid=?';
        $queryParameters = array($menu[0]['templateid']);
        $modules = getDataOld($query, 'templatesmodulesxref-'.$menu[0]['templateid'], $queryParameters);
        
        unset($_SESSION['permissions']);
        
        //print_r($modules);
        
        foreach ($modules as $key => $value)
        {
            $query = 'SELECT mmx.moduleid FROM '.DBPREFIX.'admin_menusmodulesxref mmx WHERE mmx.menuid=? AND mmx.position=?';
            $queryParameters = array($menu[0]['id'],$modules[$key]['position']);
            $overridedModule = getDataOld($query, 'menusmodulesxref-'.$menu[0]['id'].'-'.$modules[$key]['position'], $queryParameters);
            
            if (isset($overridedModule[0]))
            {
                $modules[$key]['moduleid'] = $overridedModule[0]['moduleid'];
            }
            
            if ($modules[$key]['moduleid'])
            {
                $parameters = array();
                
                $parameters['menuid'] = $menu[0]['id'];
                $parameters['moduleid'] = $modules[$key]['moduleid'];
                
                //set basic role permissions
                if (isset($_SESSION['userid']))
                {
                    /*$query = 'SELECT ur.roleid FROM '.DBPREFIX.'usersroles ur WHERE ur.userid=?';
                    $queryParameters = array($_SESSION['userid']);
                    $userRoles = getData($query, '', $queryParameters, false);
                    
                    foreach ($userRoles as $urRow)
                    {
                        $query = 'SELECT rp.hasgrant, p.name FROM '.DBPREFIX.'rolespermissions rp, '.DBPREFIX.'permissions p WHERE p.id=rp.permissionid AND rp.roleid=? AND p.moduleid=?';
                        $queryParameters = array($urRow['roleid'], $modules[$key]['moduleid']);
                        $rolePermissions = getData($query, '', $queryParameters, false);
                        
                        foreach ($rolePermissions as $rpRow)
                        {
                            if (!isset($_SESSION['permissions'][$rpRow['name']][$modules[$key]['moduleid']]))
                            {
                                $_SESSION['permissions'][$rpRow['name']][$modules[$key]['moduleid']] = $rpRow['hasgrant']?true:false;
                            }
                            else if ($_SESSION['permissions'][$rpRow['name']][$modules[$key]['moduleid']])
                            {
                                $_SESSION['permissions'][$rpRow['name']][$modules[$key]['moduleid']] = $rpRow['hasgrant']?true:false;
                            }
                        }
                    }*/
                    
                    
                }
                
                //set user role permissions
                
                $query = 'SELECT mpx.name, mpx.value FROM '.DBPREFIX.'admin_modulesparametersxref mpx WHERE mpx.moduleid=?';
                $queryParameters = array($modules[$key]['moduleid']);
                $modulesparameters = getDataOld($query, 'modulesparametersxref-'.$modules[$key]['moduleid'], $queryParameters);
                
                foreach ($modulesparameters as $pkey => $pvalue)
                {
                    $explode = explode($GLOBALS['languageprefix'].'_', $pvalue['name']);
                    if (isset($explode[1]))
                    {
                        $parameters[$explode[1]] = $pvalue['value'];
                    }
                    else
                    {
                        $parameters[$pvalue['name']] = $pvalue['value'];
                    }
                }
                
                $query = 'SELECT mpx.name, mpx.value FROM '.DBPREFIX.'admin_menusparametersxref mpx WHERE mpx.menuid=? AND mpx.position=?';
                $queryParameters = array($menu[0]['id'],$modules[$key]['position']);
                $menusparameters = getDataOld($query, 'menusparametersxref-'.$menu[0]['id'].'-'.$modules[$key]['position'], $queryParameters);
                
                foreach ($menusparameters as $pkey => $pvalue)
                {
                    $parameters[$pvalue['name']] = $pvalue['value'];
                }
                
                //set specific role permissions
                
                //set specific user permissions
                
                foreach ($p as $pkey => $pvalue)
                {
                    $parameters[$pkey] = $pvalue;
                }
                
                foreach ($_GET as $gkey => $gvalue)
                {
                    $parameters[$gkey] = $gvalue;
                }
                
                $query = 'SELECT md.id, md.name, md.source FROM '.DBPREFIX.'admin_modules md WHERE md.id=?';
                $queryParameters = array($modules[$key]['moduleid']);
                $moduleData = getDataOld($query, 'modules-'.$modules[$key]['moduleid'], $queryParameters);
                
                //print_r($moduleData);
                //echo $moduleData[0]['source'];
                
                require_once('modules/'.$moduleData[0]['source'].'/'.$moduleData[0]['source'].'.php');
                $moduleHash .= $moduleData[0]['source'];
                $output = str_replace('<!-- [' . $modules[$key]['position'] . '] -->',call_user_func($moduleData[0]['source'], $parameters), $output);
                //print_r($output);
            }
        }
        
        /*if (isset($GLOBALS['title']))
        {
            $output = str_replace('<title></title>','<title>'.$GLOBALS['title'].'</title>', $output);
        }
        else if ($menu[0]['title'])
        {
            $output = str_replace('<title></title>','<title>'.$menu[0]['title'].'</title>', $output);
        }
        else
        {
            $output = str_replace('<title></title>','<title>'.TITLE.'</title>', $output);
        }*/
        
       /* if (isset($GLOBALS['description']))
        {
            $output = str_replace('<meta name="description" content="">','<meta name="description" content="'.$GLOBALS['description'].'" />', $output);
        }
        else if ($menu[0]['description'])
        {
            $output = str_replace('<meta name="description" content="">','<meta name="description" content="'.$menu[0]['description'].'" />', $output);
        }
        else
        {
            $output = str_replace('<meta name="description" content="">','<meta name="description" content="'.DESCRIPTION.'" />', $output);
        }
        */
        /*$output = str_replace('BASEURLROOT',BASEURL, $output);
        $output = str_replace('BASEURL',BASEURL, $output);*/
    }
    
    $GLOBALS['dev'] = 1;   
    if ($GLOBALS['css'])
    {
        $filename = 'css/custom/'.md5($moduleHash.$GLOBALS['version']).'.css';
        if (!file_exists($filename) || $GLOBALS['dev'])
        {
            $fp = fopen($filename, 'w+');            
            
            $GLOBALS['css'] = str_replace('url(\'', 'url(\''.getRootLink(''), $GLOBALS['css']);
            
            $maincss = '';
            
            $maincss .= str_replace('url(\'', 'url(\''.getRootLink(''),file_get_contents(DOCROOT.'/css/bootstrap.min.css'));
            
            $maincss .= str_replace('url(\'', 'url(\''.getRootLink(''),file_get_contents(DOCROOT.'/css/fontello.css'));
            
            $maincss .= str_replace('url(\'', 'url(\''.getRootLink(''),file_get_contents(DOCROOT.'/css/main.css'));
            
            $maincss = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $maincss);
            
            $maincss = str_replace(': ', ':', $maincss);
            
            $maincss = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $maincss);
            
            fwrite($fp, $maincss);
            
            fwrite($fp, $GLOBALS['css']);
        }
                
        $output = str_replace('<head>','<head><link href="[CONSTANT]BASEURL[/CONSTANT]/'.$filename.'" rel="stylesheet">', $output);
        
        //$output = str_replace('<head>','<head><style>'.file_get_contents(getLink($filename)).'</style>', $output);
    }
    
    if ($GLOBALS['js'])
    {
        
        $filename = 'js/custom/'.md5($moduleHash.$GLOBALS['version']).'.js';
        if (!file_exists($filename) || $GLOBALS['dev'])
        {
            $GLOBALS['js'] = addVariables($GLOBALS['js'], $parameters);
            
            $fp = fopen($filename, 'w+');
            
            /*if ($GLOBALS['compress'])
             {
             if ($GLOBALS['localhost'] == 0)
             {
             require_once($GLOBALS['minifier']);
             
             $GLOBALS['js'] = Minifier::minify($GLOBALS['js']);
             }
             }*/
            
            fwrite($fp, $GLOBALS['js']);
        }
        
        $GLOBALS['js'] = '
			<script type="text/javascript">
				function downloadJSAtOnload() {
					var element = document.createElement("script");
					element.src = "'.getRootLink($filename).'";
					document.body.appendChild(element);
				}
				if (window.addEventListener)
					window.addEventListener("load", downloadJSAtOnload, false);
				else if (window.attachEvent)
					window.attachEvent("onload", downloadJSAtOnload);
				else window.onload = downloadJSAtOnload;
			</script>';
        
        $GLOBALS['js'] = '<script src="'.getRootLink($filename).'"></script>';
    }
    
    $output = str_replace('<!-- [JAVASCRIPT] -->',$GLOBALS['js'], $output);
    
    if (isset($GLOBALS['lastjs']))
    {
        $output = str_replace('<!-- [LASTJAVASCRIPT] -->',$GLOBALS['lastjs'], $output);
    }
    
    $output = str_replace('[CONSTANT]BASEURLROOT[/CONSTANT]',BASEURL, $output);
    $output = str_replace('[CONSTANT]BASEURL[/CONSTANT]',BASEURL, $output);
    
    $output = str_replace('BASEURLROOT',BASEURL, $output);
    $output = str_replace('BASEURL',BASEURL, $output);
    
    return $output;
}
