| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- <?php
- namespace MGModule\DNSManager2\mgLibs\process;
- use MGModule\DNSManager2 as main;
- use MGModule\DNSManager2\mgLibs;
- use function ModulesGarden\Servers\ZimbraEmail\Core\Helper\getAdminDirName;
- use ModulesGarden\Servers\ZimbraEmail\Core\ModuleConstants;
- /**
- * Main Abstract Controller
- *
- * @author Michal Czech <michael@modulesgarden.com>
- */
- abstract class abstractMainDriver{
- /**
- * Single Ton Instance
- *
- * @var mainController
- */
- static private $_instance;
-
- /**
- * This Var define Debug Mode in Module
- *
- * @var boolean
- */
- public $_debug = false;
-
- /**
- * Mark
- *
- * $var boolean
- */
- public $isLoaded;
-
- /**
- * Load Configuration
- *
- * @var configuration
- */
- private $_configuration;
-
- /**
- * Is Loaded From Admin Area
- *
- * @var boolean
- */
- private $_isAdmin = false;
- /**
- * Key For Data Encryption
- *
- * @var string
- */
- private $encryptSecureKey;
-
- /**
- * Main Namespace
- *
- * @var string
- */
- private $_mainNamespace;
-
- private $_mainDIR;
-
- /**
- * Disable Contruct && Clone
- */
- private final function __construct() {;}
- private final function __clone() {;}
-
- public $page = 'home';
-
- /**
- * Get SingleTon Instance
- *
- * @return mainController
- */
- public static function I($force = false, $configs = array()){
- if(empty(self::$_instance) || $force)
- {
- $class = get_called_class();
-
- mainInstance::setInstanceName($class);
-
- self::$_instance = new $class();
- self::$_instance->_mainNamespace = substr(__NAMESPACE__,0, strpos(__NAMESPACE__, '\mgLibs'));
- self::$_instance->_mainDIR = call_user_func(array($class,'getMainDIR'));
- $class= self::$_instance->_mainNamespace.'\configuration';
-
- self::$_instance->_configuration = new $class();
-
- foreach($configs as $name => $value)
- {
- self::$_instance->_configuration->{$name} = $value;
- }
-
- self::$_instance->isLoaded = true;
-
- if(!empty(self::$_instance->_configuration->debug))
- {
- self::$_instance->_debug = true;
- }
-
- main\mgLibs\MySQL\query::useCurrentConnection();
- main\mgLibs\lang::getInstance(self::$_instance->_mainDIR.DS.'langs');
- }
-
- return self::$_instance;
- }
-
- function configuration(){
- return $this->_configuration;
- }
-
- public function isAdmin($status = null){
- if($status !== null)
- {
- $this->_isAdmin = $status;
- }
- return $this->_isAdmin;
- }
-
- public function isDebug(){
- return $this->_debug;
- }
- /**
- * Return Main Namespace
- *
- * @return string
- */
- function getMainNamespace(){
- return $this->_mainNamespace;
- }
-
- /**
- * Return Enrypt Key
- *
- * @return string
- */
- public function getEncryptKey(){
-
- if(empty($this->encryptSecureKey))
- {
- $this->encryptSecureKey = hash('sha256', $GLOBALS['cc_encryption_hash'].$this->configuration()->encryptHash,TRUE);
- }
-
- return $this->encryptSecureKey;
- }
-
- function setMainLangContext(){
- mgLibs\lang::setContext($this->getType().($this->isAdmin()?'AA':'CA'));
- }
-
- /**
- * Process Controllers
- *
- * @param string $controller controller name
- * @param array $input input array
- * @param string $type type of request
- * @return array
- * @throws main\mgLibs\exceptions\system
- * @throws main\mgLibs\exceptions\system
- */
- function runControler($controller,$action = 'index',$input = array(), $type = 'HTML'){
- $this->page = $controller;
- try{
- $className = $this->getMainNamespace()."\\controllers\\".$this->getType()."\\".($this->_isAdmin?'admin':'clientarea')."\\".$controller;
- try
- {
- if(!class_exists($className))
- {
- throw new main\mgLibs\exceptions\system("Unable to find page");
- }
- }
- catch (\Exception $exception)
- {
- if(!self::I()->isAdmin())
- {
- header('Location: index.php?m=DNSManager2');
- die;
- }
- throw $exception;
- }
- $controllerOBJ = new $className($input);
-
- if(!method_exists($controllerOBJ, $action.$type))
- {
- if(!self::I()->isAdmin())
- {
- header('Location: index.php?m=DNSManager2');
- die;
- }
- throw new main\mgLibs\exceptions\system("Unable to find Action: ".$action.$type);
- }
- main\mgLibs\lang::stagCurrentContext('generate'.$controller);
-
- main\mgLibs\lang::addToContext($controller);
- main\mgLibs\smarty::I()->setTemplateDir(self::I()->getModuleTemplatesDir().DS.'pages'.DS.$controller);
- $result = $controllerOBJ->{$action.$type}($input);
- switch ($type)
- {
- case 'HTML':
- if(empty($result['tpl']))
- {
- throw new main\mgLibs\exceptions\system("Provide Template Name");
- }
-
- $success = isset($result['vars']['success'])?$result['vars']['success']:false;
- $error = isset($result['vars']['error'])?$result['vars']['error']:false;
- $result = main\mgLibs\smarty::I()->view($result['tpl'], $result['vars']);
- break;
- default:
- $success = isset($result['success'])?$result['success']:false;
- $error = isset($result['error'])?$result['error']:false;
- }
- main\mgLibs\lang::unstagContext('generate'.$controller);
- return array(
- $result
- ,$success
- ,$error
- );
- } catch (\Exception $ex) {
- main\mgLibs\lang::unstagContext('generate'.$controller);
- $query = array_merge($_GET, $_POST);
- \logModuleCall(
- 'DNS Manager', __METHOD__, $ex->getMessage(), var_export($ex, true), var_export($query, true)
- );
- main\mgLibs\custom\manager\LogHelper::addFailLog('Load Page', $ex->getMessage(), "Render Page Action. Check module logs to see more");
- header('Location: index.php?m=DNSManager2');
- die;
- }
- }
- /**
- * @return bool
- */
- public static function isAdminArea()
- {
- if (isset($_SESSION['adminid']) && isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '/' . static::getAdminDirName() . '/') !== false)
- {
- return true;
- }
- return false;
- }
- /**
- * @return string
- */
- public static function getAdminDirName()
- {
- $fileName = 'configuration.php';
- $filePath = dirname(dirname(dirname(dirname(dirname(__DIR__)))));
- global $customadminpath;
- if (!$customadminpath && file_exists($filePath . DIRECTORY_SEPARATOR . $fileName))
- {
- include_once $filePath . DIRECTORY_SEPARATOR . $fileName;
- }
- if ($customadminpath && is_string($customadminpath))
- {
- return $customadminpath;
- }
- return 'admin';
- }
- /**
- * Dump data
- *
- * @param mixed $input
- */
- static function dump($input)
- {
- if(self::I()->isDebug())
- {
- echo "<pre>";
- print_r($input);
- echo "</pre>";
- }
- }
-
- abstract public function getAssetsURL();
- abstract public function getType();
-
- public static function getMainDIR(){
- return false;
- }
- public static function getUrl(){
- return false;
- }
- }
|