<?php
define('GTFW_APP_DIR', str_replace('\\', '/', dirname(__FILE__)) . '/');

   //Load Configuration
        require_once 'config/configuration.class.php';
        $cfg = new Configuration();

   if(!file_exists('config/base.conf.php'))
      header("location:../install/");
   else
      $cfg->Load('base.conf.php');
      

        //Load Library Class
        require_once $cfg->GetValue('app_lib') . 'adodb/adodb.inc.php';
        require_once $cfg->GetValue('app_lib') . 'pat_template/pat_template.php';
        #require_once $cfg->GetValue('app_lib') . 'pat_template_v3/pat_template.php';
    require_once $cfg->GetValue('app_lib') . 'nusoap/nusoap.php';

   //Load Application Class                
        require_once $cfg->GetValue('app_data') . 'user_identity.class.php';
        require_once $cfg->GetValue('app_data') . 'security.class.php';
        require_once $cfg->GetValue('app_data') . 'role.class.php';
        require_once $cfg->GetValue('app_data') . 'links.class.php';
   
        require_once $cfg->GetValue('app_proc') . 'error.class.php';

        //Load security class
        require_once $cfg->GetValue('app_lib') .'sanitizer/Sanitizer.class.php';
        /*do sanitize post and get*/
        Sanitizer::Instance()->sanitizeAll();

        if($cfg->GetValue('sso') == true){
                require_once $cfg->GetValue('app_lib') . '/cas/gtCas.class.php';
                GtCas::init();

                require_once $cfg->GetValue('app_data') . 'provider.class.php';
                $op = new BasicProvider($cfg->ForcePageTo('login', 'login', 'view'));
                $op->server();
        }else {
                session_start();
        }
        $valid = false;

        /*
                pModule : Nama Module
                pSub : Sub Module. Ex : di Module Manajemen User, ada Sub Modul Kategori User
                pAct: Prefix Sub Module. Ex : View, Add, Edit, atau lainnya..
        */
   $mustCheckSession = false;  
        if (isset($_REQUEST['pModule']) && isset($_REQUEST['pAct']) && isset($_REQUEST['pSub'])) {
      $fileStatus = $cfg->GetPage($_REQUEST['pModule'], $_REQUEST['pSub'], $_REQUEST['pAct']);    
      
                $valid = true;
      $module = $cfg->Dec($_REQUEST['pModule']);
      
      if ($cfg->Dec($_REQUEST['pSub']) == "logout") {
         require_once $fileStatus;
      }elseif ($module != "login" AND $module != "error" ) {
         $mustCheckSession = true;      
      } 
        } else {
                $fileStatus = $cfg->ForcePageTo('login', 'login', 'view');
                $valid = true;
        }
   
 // echo "masuk sisni "; exit; 
   
   if (false !== $valid){
        if (false == $fileStatus) {
         $security = new Security($cfg);   
            //echo "denied file status"  ;
                        $security->DenyPageAccess();
                } else {
         if ($mustCheckSession === true){
                if(strpos($fileStatus,'view_hasil_kuisioner.php')!==False) require_once $fileStatus;
                else {
                    $security = new Security($cfg);             
                    if (true === $security->IsSessionExpired()) {
                       //echo "session expired access"  ;
                       $security->SessionExpiredAccess();
                    } else
                       require_once $fileStatus;
          }
         }else
                           require_once $fileStatus;
                }
        } else {
      //echo "denied bawah"  ;
                $security->DenyPageAccess();
        }
?>