Page selection
This commit is contained in:
79
inc/main.php
79
inc/main.php
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user