Page selection

This commit is contained in:
2021-06-25 23:26:18 +02:00
parent cc58284478
commit b4f1225a56

View File

@@ -13,35 +13,35 @@ abstract class Main extends PhpObject
const UNAUTHORIZED = 'unauthorized'; const UNAUTHORIZED = 'unauthorized';
const NOT_FOUND = 'unknown action'; const NOT_FOUND = 'unknown action';
const NO_DATA = 'No Data'; const NO_DATA = 'No Data';
const ACTIVE = 1; const ACTIVE = 1;
const INACTIVE = 0; const INACTIVE = 0;
//Folders //Folders
const MASKS_FOLDER = 'masks/'; const MASKS_FOLDER = 'masks/';
/** /**
* Class Management * Class Management
* @var ClassManagement * @var ClassManagement
*/ */
protected $oClassManagement; protected $oClassManagement;
/** /**
* DB Handle * DB Handle
* @var Db * @var Db
*/ */
protected $oDb; protected $oDb;
//Dates format //Dates format
const URL_DATE_FORMAT = 'Ymd'; const URL_DATE_FORMAT = 'Ymd';
const LAYOUT_DATE_FORMAT = 'F \t\h\e jS, Y'; const LAYOUT_DATE_FORMAT = 'F \t\h\e jS, Y';
const MYSQL_DATE_FORMAT = 'Y-m-d'; const MYSQL_DATE_FORMAT = 'Y-m-d';
const LAYOUT_TIME_FORMAT = 'G:i'; const LAYOUT_TIME_FORMAT = 'G:i';
//Variables //Variables
protected $asMasks; protected $asMasks;
protected $asContext; protected $asContext;
/** /**
* Language Translator * Language Translator
* @var Translator * @var Translator
@@ -57,12 +57,12 @@ abstract class Main extends PhpObject
{ {
parent::__construct($sFile, Settings::DEBUG); parent::__construct($sFile, Settings::DEBUG);
$this->oClassManagement = $oClassManagement; $this->oClassManagement = $oClassManagement;
//Load classes //Load classes
$asMandatoryClasses[] = array('name'=>'mask', 'project'=>false); $asMandatoryClasses[] = array('name'=>'mask', 'project'=>false);
if($bDb) $asMandatoryClasses[] = array('name'=>'db', 'project'=>false); if($bDb) $asMandatoryClasses[] = array('name'=>'db', 'project'=>false);
foreach($asMandatoryClasses as $asClass) $this->oClassManagement->incClass($asClass['name'], $asClass['project']); foreach($asMandatoryClasses as $asClass) $this->oClassManagement->incClass($asClass['name'], $asClass['project']);
$this->setContext($sProcessPage, $sTimeZone); $this->setContext($sProcessPage, $sTimeZone);
//Init objects //Init objects
@@ -71,13 +71,13 @@ abstract class Main extends PhpObject
if(in_array($this->oDb->sDbState, array(Db::DB_NO_DATA, Db::DB_NO_TABLE))) $this->install(); if(in_array($this->oDb->sDbState, array(Db::DB_NO_DATA, Db::DB_NO_TABLE))) $this->install();
} }
} }
protected abstract function install(); protected abstract function install();
public function getDbBuildScript() { public function getDbBuildScript() {
return $this->oDb->getFullInstallQuery(); return $this->oDb->getFullInstallQuery();
} }
private function setContext($sProcessPage, $sTimeZone='') private function setContext($sProcessPage, $sTimeZone='')
{ {
//Browser <> PHP <> MySql synchronization //Browser <> PHP <> MySql synchronization
@@ -90,67 +90,68 @@ abstract class Main extends PhpObject
mb_http_input(Settings::TEXT_ENC); mb_http_input(Settings::TEXT_ENC);
mb_language('uni'); mb_language('uni');
mb_regex_encoding(Settings::TEXT_ENC); mb_regex_encoding(Settings::TEXT_ENC);
$this->asContext['process_page'] = basename($sProcessPage); $this->asContext['process_page'] = basename($sProcessPage);
$sServerName = array_key_exists('SERVER_NAME', $_SERVER)?$_SERVER['SERVER_NAME']:$_SERVER['PWD']; $sServerName = array_key_exists('SERVER_NAME', $_SERVER)?$_SERVER['SERVER_NAME']:$_SERVER['PWD'];
$sScheme = array_key_exists('HTTP_X_FORWARDED_PROTO', $_SERVER)?$_SERVER['HTTP_X_FORWARDED_PROTO']:$_SERVER['REQUEST_SCHEME']; $sScheme = array_key_exists('HTTP_X_FORWARDED_PROTO', $_SERVER)?$_SERVER['HTTP_X_FORWARDED_PROTO']:$_SERVER['REQUEST_SCHEME'];
$sAppPath = $sScheme.'://'.str_replace(array('http://', 'https://'), '', $sServerName.dirname($_SERVER['SCRIPT_NAME'])); $sAppPath = $sScheme.'://'.str_replace(array('http://', 'https://'), '', $sServerName.dirname($_SERVER['SCRIPT_NAME']));
$this->asContext['serv_name'] = $sAppPath.(mb_substr($sAppPath, -1)!='/'?'/':''); $this->asContext['serv_name'] = $sAppPath.(mb_substr($sAppPath, -1)!='/'?'/':'');
$this->setMasks(); $this->setMasks();
} }
public static function addTimestampToFilePath($sFilePath) public static function addTimestampToFilePath($sFilePath)
{ {
//Remove timestamp //Remove timestamp
$sCleanedFilePath = preg_replace('/(.*)\?[\d]{14}$/', '$1', $sFilePath); $sCleanedFilePath = preg_replace('/(.*)\?[\d]{14}$/', '$1', $sFilePath);
//Add timestamp //Add timestamp
return file_exists($sCleanedFilePath)?$sCleanedFilePath.'?'.date("YmdHis", filemtime($sCleanedFilePath)):$sFilePath; return file_exists($sCleanedFilePath)?$sCleanedFilePath.'?'.date("YmdHis", filemtime($sCleanedFilePath)):$sFilePath;
} }
public function addUncaughtError($sError) public function addUncaughtError($sError)
{ {
$this->addError('Uncaught errors:'."\n".$sError); $this->addError('Uncaught errors:'."\n".$sError);
} }
/* Building main pages */ /* Building main pages */
public function getMainPage($asGlobalVars=array(), $sMainPage='index', $asMainPageTags=array()) public function getMainPage($asGlobalVars=array(), $sMainPage='index', $asMainPageTags=array(), $asCachePages=array())
{ {
$asDefaultConsts = array('success'=>self::SUCCESS, 'error'=>self::ERROR, 'process_page'=>$this->asContext['process_page']); $asDefaultConsts = array('success'=>self::SUCCESS, 'error'=>self::ERROR, 'process_page'=>$this->asContext['process_page']);
$asGlobalVars['consts'] = array_merge($asDefaultConsts, array_key_exists('consts', $asGlobalVars)?$asGlobalVars['consts']:array()); $asGlobalVars['consts'] = array_merge($asDefaultConsts, array_key_exists('consts', $asGlobalVars)?$asGlobalVars['consts']:array());
//Masks //Masks
$asPages = array_values($this->asMasks); if(empty($asCachePages)) $asCachePages = array_values($this->asMasks);
foreach($asPages as $sPage) foreach($asCachePages as $sPage)
{ {
//$sPageContent = $this->getPageContent($sPage); if($sPage != $sMainPage) {
$oMask = new Mask($sPage, $this->oLang); $oMask = new Mask($sPage, $this->oLang);
$sPageContent = $oMask->getMask(); $sPageContent = $oMask->getMask();
if($sPage!=$sMainPage) $asGlobalVars['consts']['pages'][$sPage] = $sPageContent; $asGlobalVars['consts']['pages'][$sPage] = $sPageContent;
}
} }
if(!is_null($this->oLang)) { if(!is_null($this->oLang)) {
$asGlobalVars['consts']['lang_prefix'] = Mask::LANG_PREFIX; $asGlobalVars['consts']['lang_prefix'] = Mask::LANG_PREFIX;
$asGlobalVars['consts']['lang'] = $this->oLang->getTranslations(); $asGlobalVars['consts']['lang'] = $this->oLang->getTranslations();
} }
$oMainMask = new Mask($sMainPage, $this->oLang); $oMainMask = new Mask($sMainPage, $this->oLang);
$oMainMask->setTag('GLOBAL_VARS', json_encode($asGlobalVars)); $oMainMask->setTag('GLOBAL_VARS', json_encode($asGlobalVars));
$oMainMask->setTags($asMainPageTags); $oMainMask->setTags($asMainPageTags);
return $oMainMask->getMask(); return $oMainMask->getMask();
} }
protected function getPageContent($sPage) protected function getPageContent($sPage)
{ {
return ToolBox::fixEOL(file_get_contents(self::MASKS_FOLDER.$sPage.'.html')); return ToolBox::fixEOL(file_get_contents(self::MASKS_FOLDER.$sPage.'.html'));
} }
/* DB structure. See Db::__construct */ /* DB structure. See Db::__construct */
protected abstract function getSqlOptions(); protected abstract function getSqlOptions();
private function setMasks() private function setMasks()
@@ -159,7 +160,7 @@ abstract class Main extends PhpObject
$asMaskPaths = glob(Mask::getMaskFile('*')); $asMaskPaths = glob(Mask::getMaskFile('*'));
$this->asMasks = array_map('basename', $asMaskPaths, array_fill(1, count($asMaskPaths), Mask::MASK_EXT)); $this->asMasks = array_map('basename', $asMaskPaths, array_fill(1, count($asMaskPaths), Mask::MASK_EXT));
} }
public static function getJsonResult($bSuccess, $sDesc, $asVars=array()) public static function getJsonResult($bSuccess, $sDesc, $asVars=array())
{ {
header('Content-type: application/json'); header('Content-type: application/json');
@@ -167,18 +168,18 @@ abstract class Main extends PhpObject
$asResult['result'] = $asResult['result']?self::SUCCESS:self::ERROR; $asResult['result'] = $asResult['result']?self::SUCCESS:self::ERROR;
return json_encode($asResult); return json_encode($asResult);
} }
public static function getResult($bSuccess, $sDesc, $asVars=array()) { public static function getResult($bSuccess, $sDesc, $asVars=array()) {
return array('result'=>$bSuccess, 'desc'=>$sDesc, 'data'=>$asVars); return array('result'=>$bSuccess, 'desc'=>$sDesc, 'data'=>$asVars);
} }
public static function goTo403() { public static function goTo403() {
http_response_code(403); http_response_code(403);
exit; exit;
} }
public static function goTo404() { public static function goTo404() {
http_response_code(404); http_response_code(404);
exit; exit;
} }
} }