<?PHP 
// error reporting
error_reporting(E_ALL);
$time_start microtime(true);
// Include the config
require_once('../include/config.inc.php');

// get the page & Separate the Request
if(isset($_SERVER['SCRIPT_URL']))
    
$page_request explode('/',strtolower(trim(str_replace(trim($GLOBAL['website_path'], '/'), ''$_SERVER['SCRIPT_URL']), '/'))); 
else
    
$page_request = array('');
    
// quick fix.. find out problem
if($page_request[count($page_request)-1] == 'undefined') {
    
header("HTTP/1.0 404 Not Found");
    die();
}
    
/***********************************************************************
Legacy Conversions
***********************************************************************/
if($page_request[0] == 'rssfeed'){
    
$page_request[0] = 'rss';
    
$page_request[1] = 'news';
}    
    
/***********************************************************************
    Cookie Login
***********************************************************************/
if(!isset($_SESSION['user']) && isset($_COOKIE['rememberme']) && isset($_COOKIE['email'])){
    
$user = new user();
    if(
$user->login($_COOKIE['email'], $_COOKIE['rememberme'])){
        
$_SESSION['user'] = $user;
    }
}

/***********************************************************************
    RSS Section
***********************************************************************/
if($page_request[0] == 'rss'){
    require_once(
'classes/class.rss.php');
    
    
$rss_type $page_request[1];
    
$rss_sub_type '';
    if(isset(
$page_request[2]))
        
$rss_sub_type $page_request[2];

    if(
is_file('../rss/'.$rss_type.'.php')){
        require_once(
'../rss/'.$rss_type.'.php');
    }else{
        
insert404();
        require_once(
'../rss/404.php');
    }
    
    
$time_end microtime(true);
    
$time number_format($time_end $time_start4);
    die(
"<!-- rss rendered in $time seconds -->");
}

/***********************************************************************
    AJAX Section
***********************************************************************/
// files for all regular pages and soem ajax
require_once('patTemplate.php');

if(
$page_request[0] == 'ajax'){
    
$ajax_type $page_request[1];
    
    if(
is_file('../ajax/'.$ajax_type.'.php')){
        require_once(
'../ajax/'.$ajax_type.'.php');
    }else{
        
insert404();
        die(
'404 Not Found');
    }
    
    
$time_end microtime(true);
    
$time number_format($time_end $time_start4);
    if(!isset(
$no_render_time))
        die(
"<!-- ajax rendered in $time seconds -->");
    die();
}


/***********************************************************************
    Regular Pages
***********************************************************************/

// Start Template
$tmpl = new patTemplate();
$tmpl->setBasedir'../templates' );
$tmpl->useTemplateCache'File', array('cacheFolder' => '../cache/pat',
                                        
'lifetime'    => 10,
                                        
'filemode'    => 0644));
$tmpl->readTemplatesFromFile'mainLayout.tpl' );
$tmpl->AddGlobalVars($GLOBAL);
// old site compatibility
if($page_request[0] == 's'$page_request[0] = 'search';
if(
$page_request[0] == 'search-result.php'$page_request[0] = 'search';

// display page
switch ($page_request[0]){
    case 
'':
        if(isset(
$_SESSION['user']) && $_SESSION['user']){
            
header('Location: '.$GLOBAL['website_path'].'/User');
            die();
        }
    case 
'news':
        require_once(
'pages/news.php');
        break;
    case 
'newest':
        
$keyword '';
        if(isset(
$page_request[1]) && trim($page_request[1]) != ''$keyword trim($page_request[1]);
        
        
$tmpl->readTemplatesFromFile'pages/newest.tpl' );
        require_once(
'pages/newest.php');
        break;    
    case 
'browse':
    case 
'search':
    case 
'login':
    case 
'logout':
    case 
'roadmap':
    case 
'contest':
    case 
'contest_vote':
    case 
'recentimages':
    case 
'recentcomments':
    case 
'randomimages':
    case 
'advsearch':
    case 
'statistics':
    case 
'source':
    case 
'use':
    case 
'use_undocumented':
    case 
'more':
    case 
'glsa':
    case 
'rss_listing':
    case 
'website_widget':
        
$tmpl->readTemplatesFromFile'pages/'.$page_request[0].'.tpl' );
        require_once(
'pages/'.$page_request[0].'.php');
        break;
    
    case 
'admin':
        if(isset(
$_SESSION['user']) && $_SESSION['user']->isAdmin){
            if(!isset(
$page_request[1])) $page_request[1] = '';
            
            switch(
$page_request[1]){
                case 
'':
                    require_once(
'pages/admin.php');
                    break;
                case 
'news':
                    require_once(
'pages/admin_news.php');
                    break;
                case 
'404':
                    require_once(
'pages/admin_404.php');
                    break;
                case 
'import':
                    if(!isset(
$page_request[2])) $page_request[2] = '';
                    switch(
$page_request[2]){
                        case 
'':
                            require_once(
'scripts/import.php');die();
                        case 
'hardmask':
                            require_once(
'scripts/hardmasking.php');die();
                        case 
'use':
                            require_once(
'scripts/USEflags.php');die();
                        case 
'changelog':
                            require_once(
'scripts/changelogs.php');die();
                        case 
'glsa':
                            require_once(
'scripts/GLSA.php');die();
                        case 
'bugs':
                            require_once(
'scripts/bugs.php');die();    
                        case 
'nightly_emails':
                            require_once(
'scripts/nightly_emails.php');die();    
                        case 
'package_descriptions':
                            require_once(
'scripts/package_descriptions.php');die();
                        case 
'site_vars':
                            require_once(
'scripts/update_site_vars.php');die();
                        case 
'stats':
                            require_once(
'scripts/stats.php');die();
                    }
                    break;
            }
            
            break;
        }
    case 
'user':
        if(isset(
$_SESSION['user']) && $_SESSION['user']->isLoggedIn){
            if(!isset(
$page_request[1])) $page_request[1] = '';
            
$tmpl->addVar('GentooPortage''MORE_SELECTED''selected');
            switch(
$page_request[1]){
                case 
'preferences':
                    require_once(
'pages/user_preferences.php');
                    break;
                case 
'images':
                    require_once(
'pages/user_images.php');
                    break;
                case 
'':
                default: 
                    require_once(
'pages/user_homepage.php');
                    break;
            }
            break;
        }
    default:
        
// check if category exists
        
$category = new category($page_request[0]);
        if(
$category->id != 0){
            if(isset(
$page_request[1])){
                
$package = new package($category->id$page_request[1]);
                if(
$package->id != 0){
                    
$tmpl->readTemplatesFromFile'pages/package_main.tpl' );
                    require_once(
'pages/package_main.php');
                    break;
                }
            }else{
                
$tmpl->readTemplatesFromFile'pages/browse_category.tpl' );
                require_once(
'pages/browse_category.php');
                break;
            }
        }
        
        
// check if package exists
        
header("HTTP/1.0 404 Not Found");
        
$tmpl->addVar('GentooPortage''PAGE_TITLE''- 404');
        
$tmpl->readTemplatesFromFile'pages/404.tpl' );
        
//insert404();
        
break;
}
// logged in shizzle
if(isset($_SESSION['user']) && $_SESSION['user'] &&  $_SESSION['user']->isLoggedIn){
    
$tmpl->addVar('GentooPortage''isloggedin''1');
}else{
    
/*$site_vars = new site_vars();
    header('Last-Modified: '. date('r', $site_vars->var['last_import_stamp']));
    header('Cache-Control: s-maxage=600, must-revalidate, max-age=0');*/
}

// display ad type
$adtype rand(0,1);
$tmpl->addVar('adspot''adtype'1);

// Output page
$tmpl->displayParsedTemplate();

$time_end microtime(true);
$time number_format($time_end $time_start4);
echo 
"<!-- page rendered in $time seconds -->";
?>