From a35382646e5a1a050bab4d58c640d06cdd9a8b12 Mon Sep 17 00:00:00 2001 From: franzz Date: Wed, 7 Oct 2015 00:12:59 +0200 Subject: [PATCH] adding main class as an abstract class --- .gitignore | 2 + class_management.php | 7 ++- inc/main.php | 137 ++++++++++++++----------------------------- 3 files changed, 52 insertions(+), 94 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6798cb0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.buildpath +/.project diff --git a/class_management.php b/class_management.php index 33d3710..47284f1 100755 --- a/class_management.php +++ b/class_management.php @@ -3,7 +3,7 @@ /** * Manage includes * @author franzz - * @version 1.1 + * @version 1.2 */ class ClassManagement extends PhpObject { @@ -12,6 +12,7 @@ class ClassManagement extends PhpObject const INC_EXT = '.php'; const SETTINGS_FILE = 'settings.php'; const TOOLBOX_CLASS = 'toolbox'; + const MAIN_CLASS_ABS = 'main'; private $asIncFiles; @@ -25,6 +26,7 @@ class ClassManagement extends PhpObject $this->incClass(self::TOOLBOX_CLASS); //Include main class + $this->incClass(self::MAIN_CLASS_ABS); $this->incClass($sMainClass, true); } @@ -36,7 +38,8 @@ class ClassManagement extends PhpObject public function incClass($sClassName, $bProjectClass=false) { $sProject = $bProjectClass?'':self::OBJECT_FOLDER; - return $this->incFile($sProject.self::INC_FOLDER.$sClassName.self::INC_EXT); + $sFile = $sProject.self::INC_FOLDER.$sClassName.self::INC_EXT; + return $this->incFile($sFile); } public function incFile($sFilePath, $bMandatory=true) diff --git a/inc/main.php b/inc/main.php index c3a3dd8..a28c798 100755 --- a/inc/main.php +++ b/inc/main.php @@ -3,7 +3,7 @@ /** * Main Class * @author franzz - * @version 2.0 + * @version 2.1 */ class Main extends PhpObject { @@ -14,53 +14,52 @@ class Main extends PhpObject const NOT_FOUND = 'unknown action'; //... + //Folders + const MASKS_FOLDER = 'masks/'; + //Objects - private $oClassManagement; - private $oMySql; - private $oTranslator; + protected $oClassManagement; + protected $oMySql; + //private $oTranslator; //... + //Dates format + const URL_DATE_FORMAT = 'Ymd'; + const LAYOUT_DATE_FORMAT = 'F \t\h\e jS, Y'; + const MYSQL_DATE_FORMAT = 'Y-m-d'; + const LAYOUT_TIME_FORMAT = 'G:i'; + //Variables - private $sLang; - private $asMasks; - private $asContext; + //private $sLang; + protected $asMasks; + protected $asContext; //... /** - * Main constructor [to be called from index.php] + * Main constructor * @param ClassManagement $oClassManagement * @param string $sLang */ - public function __construct($oClassManagement, $sProcessPage, $sLang='') + public function __construct($oClassManagement, $sProcessPage/*, $sLang=''*/) { parent::__construct(__CLASS__, Settings::DEBUG); $this->oClassManagement = $oClassManagement; - $this->setContext($sProcessPage); - - //Browser <> PHP <> MySql synchronization - date_default_timezone_set(Settings::TIMEZONE); - ini_set('default_charset', Settings::TEXT_ENC); - header('Content-Type: text/html; charset='.Settings::TEXT_ENC); - mb_internal_encoding(Settings::TEXT_ENC); - mb_http_output(Settings::TEXT_ENC); - mb_http_input(Settings::TEXT_ENC); - mb_language('uni'); - mb_regex_encoding(Settings::TEXT_ENC); //Load classes $this->oClassManagement->incClass('mask'); - $this->oClassManagement->incClass('translator'); + + $this->setContext($sProcessPage); + + //$this->oClassManagement->incClass('translator'); $this->oClassManagement->incClass('mysqlmanager'); - $this->oClassManagement->incClass('auth'); + //$this->oClassManagement->incClass('auth'); //... - + //Init objects - $this->setLanguage($sLang); - $this->setMasks(); - $this->oTranslator = new Translator($this->getLanguage()); + //$this->setLanguage($sLang); + //$this->oTranslator = new Translator($this->getLanguage()); $this->oMySql = new MySqlManager(Settings::DB_SERVER, Settings::DB_LOGIN, Settings::DB_PASS, Settings::DB_NAME, self::getSqlOptions() , Settings::DB_ENC); if($this->oMySql->sDbState == MySqlManager::DB_NO_DATA) $this->install(); - $this->oAuth = new Auth($this->oMySql, Settings::API_KEY); //... } @@ -72,11 +71,23 @@ class Main extends PhpObject private function setContext($sProcessPage) { + //Browser <> PHP <> MySql synchronization + date_default_timezone_set(Settings::TIMEZONE); + ini_set('default_charset', Settings::TEXT_ENC); + header('Content-Type: text/html; charset='.Settings::TEXT_ENC); + mb_internal_encoding(Settings::TEXT_ENC); + mb_http_output(Settings::TEXT_ENC); + mb_http_input(Settings::TEXT_ENC); + mb_language('uni'); + mb_regex_encoding(Settings::TEXT_ENC); + $this->asContext['process_page'] = basename($sProcessPage); $sServerName = array_key_exists('SERVER_NAME', $_SERVER)?$_SERVER['SERVER_NAME']:$_SERVER['PWD']; $sAppPath = 'http://'.str_replace('http://', '', $sServerName.dirname($_SERVER['SCRIPT_NAME'])); $this->asContext['serv_name'] = $sAppPath.(mb_substr($sAppPath, -1)!='/'?'/':''); + + $this->setMasks(); } public function addUncaughtError($sError) @@ -84,43 +95,9 @@ class Main extends PhpObject $this->addError('Uncaught errors:'."\n".$sError); } - /* Authorizations handling */ - - public function isLoggedIn() - { - return $this->oAuth->isLoggedIn(); - } - - public function logMeIn($sToken) - { - return $this->oAuth->logMeIn($sToken); - } - - public function checkApiKey($sApiKey) - { - return $this->oAuth->checkApiKey($sApiKey); - } - /* Building main pages */ - public function getMainPage() - { - $asPages = array('edit', 'cv'); - foreach($asPages as $sPage) $asGlobalVars['pages'][$sPage] = $this->getPageContent($sPage); - $asGlobalVars['id_to_trig'] = $this->oMySql->selectRows(array('select'=>array('ID', 'TRIG'), 'from'=>'EMPLOYEE'), true, 'ID'); - $asGlobalVars['trig_to_id'] = array_flip($asGlobalVars['id_to_trig']); - $asGlobalVars['id'] = $this->oAuth->getUserId(); - $asGlobalVars['names'] = $this->getNames(); - - return $this->getPage('index', $asGlobalVars); - } - - public function getLogonPage() - { - return $this->getPage('logon'); - } - - private function getPage($sPage, $asGlobalVars=array()) + private function getMainPage($sPage, $asGlobalVars=array()) { $asGlobalVars['consts'] = array('success'=>self::SUCCESS, 'error'=>self::ERROR, 'process_page'=>$this->asContext['process_page']); @@ -129,44 +106,19 @@ class Main extends PhpObject return $sPage."\n".''; } - private function getPageContent($sPage) + protected function getPageContent($sPage) { - return /*utf8_encode(*/file_get_contents('masks/'.$sPage.'.html')/*)*/; + return /*utf8_encode(*/file_get_contents(self::MASKS_FOLDER.$sPage.'.html')/*)*/; } /* DB structure. See MySqlManager::__construct */ private static function getSqlOptions() { - return array - ( - 'tables' => array - ( - self::USER_TABLE=>array( 'first_name', 'last_name', 'nickname', 'email', 'pass') - //... - ), - 'types' => array - ( - 'first_name'=>"varchar(20) NOT NULL", - 'last_name'=>"varchar(20) NOT NULL", - 'nickname'=>"varchar(50) NOT NULL", - 'email'=>"varchar(100) NOT NULL", - 'pass'=>"varchar(128) NOT NULL" - //... - ), - 'constraints' => array - ( - self::USER_TABLE=>"UNIQUE KEY `firstname_lastname_nickname` (`first_name`, `last_name`, `nickname`)" - //... - ), - 'cascading_delete' => array - ( - self::USER_TABLE=>array(self::DON_TABLE) - //... - ) - ); + return self::NOT_FOUND; } + /* private function getLanguage() { return $this->sLang; @@ -184,6 +136,7 @@ class Main extends PhpObject if($asIpInfo['statusCode'] == 'OK') $this->sLang = $asIpInfo['countryCode']; } } + */ private function setMasks() { @@ -195,7 +148,7 @@ class Main extends PhpObject public static function getJsonResult($bSuccess, $sDesc, $asVars=array()) { header('Content-type: application/json'); - return json_encode(array('result'=>$bSuccess?self::SUCCESS:self::ERROR, 'desc'=>self::mb_ucwords($sDesc))+$asVars); + return json_encode(array('result'=>$bSuccess?self::SUCCESS:self::ERROR, 'desc'=>ToolBox::mb_ucwords($sDesc))+$asVars); } }