| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580 |
- <?php
- namespace MGModule\DNSManager2;
- use MGModule\DNSManager2 as main;
- use MGModule\DNSManager2\mgLibs\custom\manager\GlobalSettingHelper;
- use MGModule\DNSManager2\models\custom\globalsetting\GlobalSettingEnum;
- use MGModule\DNSManager2\mgLibs\custom\dns\exceptions\DNSSubmoduleException;
- use MGModule\DNSManager2\mgLibs\custom\dns\SubmoduleExceptionCodes;
- use MGModule\DNSManager2\mgLibs\custom\AjaxResponse;
- use MGModule\DNSManager2\mgLibs\lang;
- use MGModule\DNSManager2\mgLibs\custom\helpers\HTML5Pattern;
- /**
- * Description of Addon
- *
- * @author Michal Czech <michael@modulesgarden.com>
- */
- class addon extends main\mgLibs\process\abstractMainDriver{
- /**
- * Load Addon WHMCS Configuration
- *
- *
- */
- function loadAddonConfiguration(){
- $result = mgLibs\MySQL\query::select(
- array(
- 'setting'
- ,'value'
- )
- , 'tbladdonmodules'
- ,array(
- 'module' => $this->configuration()->systemName
- )
- );
- while($row = $result->fetch())
- {
- $this->configuration()->{$row['setting']} = $row['value'];
- }
- }
-
- /**
- * Return Tempalates Path
- *
- * @param boolean $relative
- * @return string
- */
- static function getModuleTemplatesDir($relative = false){
-
- $dir = ($relative)?'':(__DIR__.DS);
-
- $dir .= 'templates'.DS;
-
- if(self::I()->isAdmin())
- {
- return $dir.'admin';
- }
- else
- {
- $template = GlobalSettingHelper::getSetting(GlobalSettingEnum::DEFAULT_TEMPLATE)?:'default';
-
- if(file_exists(__DIR__.DS.'templates'.DS.'clientarea'.DS.$template))
- {
- return $dir.'clientarea'.DS.$template;
- }
- else
- {
- return $dir.'clientarea'.DS.'default';
- }
- }
- }
-
- public function getAssetsURL() {
- if($this->isAdmin())
- {
- return '../modules/addons/'.$this->configuration()->systemName.'/templates/admin/assets';
- }
- else
- {
- return 'modules/addons/'.$this->configuration()->systemName.'/'.str_replace('\\','/',self::getModuleTemplatesDir(true)).'/assets';
- }
- }
-
- public function getType() {
- return 'addon';
- }
-
- public static function getMainDIR() {
- return __DIR__;
- }
- static function getUrl($page = null,$action=null,$params = array()){
- if(self::I()->isAdmin())
- {
- $url = 'addonmodules.php?module='.self::I()->configuration()->systemName;
- }
- else
- {
- $url = 'index.php?m='.self::I()->configuration()->systemName;
- }
-
- if($page)
- {
- $url .= '&mg-page='.$page;
- if($action){
- $url .= '&mg-action='.$action;
- }
-
- if($params)
- {
- $url .= '&'.http_build_query($params);
- }
- }
- return $url;
- }
-
- static function genCustomPageUrl($page = null,$action=null,$params = array()){
- if(self::I()->isAdmin())
- {
- $url = 'addonmodules.php?module='.self::I()->configuration()->systemName.'&customPage=1';
- }
- else
- {
- $url = 'index.php?m='.self::I()->configuration()->systemName.'&customPage=1';
- }
-
- if($page)
- {
- $url .= '&mg-page='.$page;
- }
-
- if($action){
- $url .= '&mg-action='.$action;
- }
-
- if($params)
- {
- $url .= '&'.http_build_query($params);
- }
-
- return $url;
- }
-
- static function genJSONUrl($page){
- if(self::I()->isAdmin())
- {
- return 'addonmodules.php?module='.self::I()->configuration()->systemName.'&json=1&mg-page='.$page;
- }
- else
- {
- return 'index.php?m='.self::I()->configuration()->systemName.'&json=1&mg-page='.$page;
- }
- }
-
- static function config(){
- return array
- (
- 'name' => self::I()->configuration()->name
- ,'description' => self::I()->configuration()->description
- ,'version' => self::I()->configuration()->version
- ,'author' => self::I()->configuration()->author
- ,'fields' => self::I()->configuration()->getAddonWHMCSConfig()
- );
- }
-
- static function activate(){
- try{
- self::I()->configuration()->activate();
-
- return array(
- 'status'=>'success'
- );
- } catch (\Exception $ex) {
- return array(
- 'status' => 'error'
- ,'description' => $ex->getMessage()
- );
- }
- }
-
- static function deactivate(){
- self::I()->configuration()->deactivate();
- }
-
- static function upgrade($vars){
- $moduleVersion = isset($vars['version']) ? $vars['version'] : $vars[self::I()->configuration()->systemName]['version'];
- self::I()->configuration()->upgrade($moduleVersion);
- }
-
- static function getHTMLAdminCustomPage($input)
- {
- try{
- self::I()->isAdmin(true);
- self::I()->setMainLangContext();
-
- $page = empty($input['mg-page'])?'dashboard':$input['mg-page'];
- $action = empty($input['mg-action'])?'index':$input['mg-action'];
-
- list($content) = self::I()->runControler($page,$action,$input,'CustomHTML');
- return $content;
- } catch (\Exception $ex) {
- self::dump($ex);
- mgLibs\smarty::I()->setTemplateDir(self::I()->getModuleTemplatesDir());
- $message = $ex->getMessage();
- if(method_exists($ex, 'getToken'))
- {
- $message .= mgLibs\lang::absoluteT('token').$ex->getToken();
- }
-
- return mgLibs\smarty::I()->view('fatal',array(
- 'message' => $message
- ));
- }
- }
-
- static function getHTMLAdminPage($input){
- try{
- self::I()->isAdmin(true);
- self::I()->setMainLangContext();
-
- if(self::I()->isDebug())
- {
- self::I()->configuration()->activate();
- }
-
- $menu = array();
- foreach(self::I()->configuration()->getAddonMenu() as $catName => $category)
- {
- if(isset($category['submenu']))
- {
- foreach($category['submenu'] as $subName => &$subPage)
- {
- if(empty($subPage['url']))
- {
- $subPage['url'] = self::getUrl($catName,$subName);
- }
- }
- }
- $category['url'] = self::getUrl($catName);
-
- $menu[$catName] = $category;
- }
- $page = empty($input['mg-page'])?'dashboard':$input['mg-page'];
- $action = empty($input['mg-action'])?'index':$input['mg-action'];
-
- $vars = array(
- 'assetsURL' => self::I()->getAssetsURL()
- ,'mainURL' => self::I()->getUrl()
- ,'mainName' => self::I()->configuration()->name
- ,'menu' => $menu
- ,'JSONCurrentUrl' => self::I()->genJSONUrl($page)
- ,'currentPageName' => $page
- ,'Addon' => self::I()
- ,'patterns' => HTML5Pattern::getPatternsArray()
- );
- try{
- list($content,$success,$error) = self::I()->runControler($page,$action,$input,'HTML');
- $vars['content'] = $content;
- $vars['success'] = $success;
- $vars['error'] = $error;
- } catch (\Exception $ex) {
- self::dump($ex);
- main\mgLibs\error\register::register($ex);
- $vars['error'] = $ex->getMessage();
- if(method_exists($ex, 'getToken'))
- {
- $vars['error'] .= mgLibs\lang::absoluteT('token').$ex->getToken();
- }
- }
-
- mgLibs\smarty::I()->setTemplateDir(self::I()->getModuleTemplatesDir());
- $html = mgLibs\smarty::I()->view('main',$vars);
-
- if(self::I()->isDebug())
- {
- $tmp = '<div style="color: #a94442;background-color: #f2dede;border-color: #dca7a7;font-size:20px;padding:10px;"><strong>Module is under development Mode!!!!!!!!!!!!!!!</strong></div>';
- if($langs = mgLibs\lang::getMissingLangs())
- {
- $tmp .= '<pre>';
- foreach($langs as $lk => $lang)
- {
- $tmp .= $lk." = ".$lang."\n";
- }
- $tmp .= '</pre>';
- }
- $html = $tmp.$html;
- }
-
- return $html;
- } catch (\Exception $ex) {
- self::dump($ex);
-
- main\mgLibs\error\register::register($ex);
- mgLibs\smarty::I()->setTemplateDir(self::I()->getModuleTemplatesDir());
- $message = $ex->getMessage();
- if(method_exists($ex, 'getToken'))
- {
- $message .= mgLibs\lang::absoluteT('token').$ex->getToken();
- }
-
- return mgLibs\smarty::I()->view('fatal',array(
- 'message' => $message
- ,'assetsURL' => self::I()->getAssetsURL()
- ));
- }
- }
-
- function getHTMLClientAreaPage($input){
- $output = array(
- 'pagetitle' => mgLibs\lang::absoluteT(self::I()->configuration()->systemName,'ClientAreaPageTitle'),
- 'templatefile' => self::I()->getModuleTemplatesDir(true).'/main',
- 'requirelogin' => isset($_SESSION['uid']) ? false : true,
- );
-
- $breadcrumb = [self::I()->getUrl() => mgLibs\lang::absoluteT(self::I()->configuration()->systemName,'ClientAreaBreadcrumbTitle')];
- try{
- self::I()->setMainLangContext();
-
- $page = 'dashboard';
- if(!empty($input['mg-page']))
- {
- $page = $input['mg-page'];
- $url = self::I()->getUrl($input['mg-page']);
- $breadcrumb[$url] = $input['mg-page'];
- }
- $action = empty($input['mg-action'])?'index':$input['mg-action'];
- $vars = array(
- 'assetsURL' => self::I()->getAssetsURL()
- ,'mainURL' => self::I()->getUrl()
- ,'mainName' => self::I()->configuration()->clientareaName
- ,'mainJSONURL' => self::I()->genJSONUrl($page)
- ,'currentPageName' => $page
- ,'patterns' => HTML5Pattern::getPatternsArray()
-
- );
- try{
- try {
- list($content,$success,$error) = self::I()->runControler($page,$action,$input,'HTML');
- } catch (DNSSubmoduleException $exc) {
- $error = self::I()->parseDNSException($exc);
- }
- $vars['MGLANG'] = mgLibs\lang::getInstance();
-
- if(self::I()->isDebug())
- {
- $html = '<div style="color: #a94442;background-color: #f2dede;border-color: #dca7a7;font-size:20px;padding:10px;"><strong>Module is under development Mode!!!!!!!!!!!!!!!</strong></div>';
-
- if($langs = mgLibs\lang::getMissingLangs())
- {
- $html .= '<pre>';
- foreach($langs as $lk => $lang)
- {
- $html .= $lk." = ".$lang."\n";
- }
- $html .= '</pre>';
- }
-
- $content = $html.$content;
- }
-
- $vars['mgcontent'] = $content;
- $vars['success'] = $success;
- $vars['error'] = $error;
-
- } catch (\Exception $ex) {
- self::dump($ex);
- main\mgLibs\error\register::register($ex);
- $vars['error'] = mgLibs\lang::absoluteT('generalError');
- if(method_exists($ex, 'getToken'))
- {
- $vars['error'] .= mgLibs\lang::absoluteT('token').$ex->getToken();
- }
- }
- } catch (\Exception $ex) {
- self::dump($ex);
- main\mgLibs\error\register::register($ex);
- $vars['error'] = mgLibs\lang::absoluteT('generalError');
- if(method_exists($ex, 'getToken'))
- {
- $vars['error'] .= mgLibs\lang::absoluteT('token').$ex->getToken();
- }
- }
-
- $output['breadcrumb'] = $breadcrumb;
- $output['vars'] = $vars;
-
- return $output;
- }
-
- public static function getJSONAdminPage($input){
- $content = array();
- $page = 'dashboard';
- if(!empty($input['mg-page']))
- {
- $page = $input['mg-page'];
- }
- $action = empty($input['mg-action'])?'index':$input['mg-action'];
- try{
- self::I()->isAdmin(true);
- self::I()->setMainLangContext();
-
- try {
- list($result,$success,$error) = self::I()->runControler($page,$action,$input,'JSON');
- } catch (DNSSubmoduleException $exc) {
- AjaxResponse::I()->addRawError(self::I()->parseDNSException($exc, false));
- $result = AjaxResponse::I()->toArray();
- }
- if($error)
- {
- $content['error'] = $error;
- $content['result'] = 'error';
- }
- elseif($success)
- {
- $content['success'] = $success;
- $content['result'] = 'success';
- }
-
- if($langs = mgLibs\lang::getMissingLangs())
- {
- $html = '<pre>';
- foreach($langs as $lk => $lang)
- {
- $html .= $lk." = ".$lang."\n";
- }
- $html .= '</pre>';
- $content['error'] = $html;
- $content['result'] = 'error';
- }
-
- $content['data'] = $result;
-
- } catch (\Exception $ex) {
- self::dump($ex);
- main\mgLibs\error\register::register($ex);
- $content['result'] = 'error';
- $content['error'] = $ex->getMessage();
- if(method_exists($ex, 'getToken'))
- {
- $content['error'] .= mgLibs\lang::absoluteT('token').$ex->getToken();
- }
- }
- $content['data'] = mb_convert_encoding($content['data'], 'UTF-8','UTF-8');
- return 'JSONRESPONSE#'.json_encode($content, JSON_HEX_QUOT | JSON_HEX_TAG).'#ENDJSONRESPONSE';
- }
-
- private function parseDNSException($exc, $isCA = true) {
- switch($exc->getCode()) {
- case SubmoduleExceptionCodes::CONNECTION_PROBLEM:
- $message = lang::absoluteT($isCA?'addonCA':'addonAA', 'dns_submodule_connection_problem') . ' ' . ($isCA?'':' Reason: ' . $exc->getMessage());
- break;
- case SubmoduleExceptionCodes::COMMAND_ERROR:
- $message = lang::absoluteT($isCA?'addonCA':'addonAA', 'dns_submodule_command_error') . ' ' . $exc->getMessage();
- break;
- case SubmoduleExceptionCodes::INVALID_PARAMETERS:
- $message = lang::absoluteT($isCA?'addonCA':'addonAA', 'dns_submodule_invalid_parameters') . ' ' . $exc->getMessage();
- break;
- case SubmoduleExceptionCodes::INVALID_RESPONSE:
- $message = lang::absoluteT($isCA?'addonCA':'addonAA', 'dns_submodule_invalid_response') . ' ' . $exc->getMessage();
- break;
- }
- return $message;
- }
-
- function getJSONClientAreaPage($input)
- {
- $content = array();
- $page = 'dashboard';
- if(!empty($input['page']))
- {
- $page = $input['page'];
- }
- $action = empty($input['mg-action'])?'index':$input['mg-action'];
- try{
- self::I()->setMainLangContext();
-
- try {
- list($result,$success,$error) = self::I()->runControler($page,$action,$input,'JSON');
- } catch (DNSSubmoduleException $exc) {
- AjaxResponse::I()->addRawError($this->parseDNSException($exc));
- $result = AjaxResponse::I()->toArray();
- }
- if($error)
- {
- $content['error'] = $error;
- $content['result'] = 'error';
- }
- elseif($success)
- {
- $content['success'] = $success;
- $content['result'] = 'success';
- }
-
- if($langs = mgLibs\lang::getMissingLangs())
- {
- $html = '<pre>';
- foreach($langs as $lk => $lang)
- {
- $html .= $lk." = ".$lang."\n";
- }
- $html .= '</pre>';
- $content['error'] = $html;
- $content['result'] = 'error';
- }
- $content['data'] = $result;
- } catch (\Exception $ex) {
- self::dump($ex);
- $content['result'] = 'error';
- main\mgLibs\error\register::register($ex);
- $content['error'] = mgLibs\lang::absoluteT('generalError');
- if(method_exists($ex, 'getToken'))
- {
- $content['error'] .= mgLibs\lang::absoluteT('token').$ex->getToken();
- }
- }
-
- return 'JSONRESPONSE#'.json_encode($content, JSON_HEX_QUOT | JSON_HEX_TAG).'#ENDJSONRESPONSE';
- }
-
- static function cron(){
- try{
- self::I()->isAdmin(true);
- self::I()->setMainLangContext();
-
- self::I()->runControler('cron','index',array(),'CRON');
- } catch (\Exception $ex) {
- self::dump($ex);
- main\mgLibs\error\register::register($ex);
- }
- }
-
- static function localAPI($action,$arguments){
- $output = array(
- 'action' => $action
- );
-
- try{
- self::I()->isAdmin(true);
- self::I()->setMainLangContext();
-
- list($result,$success,$error) = self::I()->runControler('localAPI',$action,$arguments,'API');
- $output['success'] = $result;
- } catch (\Exception $ex) {
- self::dump($ex);
- main\mgLibs\error\register::register($ex);
- $output['error'] = array(
- 'message' => $ex->getMessage()
- ,'code' => $ex->getCode()
- );
- }
- return $output;
- }
- }
|