%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/adminpanel/core/ |
Current File : //www/varak.net/mail2.varak.net_old/adminpanel/core/modules.php |
<?php /* * Copyright 2004-2014, AfterLogic Corp. * Licensed under AGPLv3 license or AfterLogic license * if commercial version of the product was purchased. * See the LICENSE file for a full license statement. */ abstract class ap_Module { /** * @var array */ protected $aTabs; /** * @var string */ protected $sPath; /** * @var string */ protected $sWebModulePath; /** * @var CAdminPanel */ protected $oAdminPanel; /** * @var ap_CoreModuleHelper */ protected $oPopulateData; /** * @var ap_CoreModuleHelper */ protected $oStandardPostAction; /** * @var ap_CoreModuleHelper */ protected $oTableAjaxAction; /** * @var ap_CoreModuleHelper */ protected $oStandardPopAction; /** * @var ap_CoreModuleHelper */ protected $oBlankAction; /** * @var ap_CoreModuleHelper */ protected $oTableList; /** * @var array */ protected $aQueryActions; /** * @var int */ protected $lastErrorCode; /** * @var string */ protected $lastErrorMessage; /** * @param CAdminPanel $oAdminPanel * @param string $sPath * @return ap_Module */ public function __construct(CAdminPanel &$oAdminPanel, $sPath) { $this->aTabs = array(); $this->aQueryActions = array(); $this->oAdminPanel =& $oAdminPanel; $this->sPath = $sPath; $this->sWebModulePath = 'modules/'.basename($sPath); $this->lastErrorCode = 0; $this->lastErrorMessage = ''; $this->initInclude(); $this->oPopulateData = null; $this->oStandardPostAction = null; $this->oStandardPopAction = null; $this->oTableAjaxAction = null; $this->oTableList = null; } /** * @return int */ public function GetLastErrorCode() { return $this->lastErrorCode; } /** * @return string */ public function GetLastErrorMessage() { return $this->lastErrorMessage; } /** * @param string $sTab * @return bool */ public function IsInTab($sTab) { return in_array($sTab, $this->aTabs); } /** * @param string $sTab * @return bool */ public function PType() { return $this->oAdminPanel->PType(); } /** * @param string $sInitType * @param ap_Screen $oScreen * @return bool */ public function InitScreen($sInitType, ap_Screen &$oScreen) { $sTab = $this->oAdminPanel->Tab(); if ($oScreen instanceof ap_Standard_Screen) { if ('first' === $sInitType) { $this->initStandardMenuByTab($sTab, $oScreen); } else if ('second' === $sInitType) { $this->initStandardMainByTab($sTab, $oScreen); } else if ('third' === $sInitType) { # } } else if ($oScreen instanceof ap_Table_Screen) { if ('first' === $sInitType) { $this->initTableTopMenu($sTab, $oScreen); $this->initTableListHeaders($sTab, $oScreen); $this->initTableMainSwitchersPre($sTab, $oScreen); $this->initTableListFilter($sTab, $oScreen); } else if ('second' === $sInitType) { $this->initTableList($sTab, $oScreen); $this->initTableMainSwitchers($sTab, $oScreen); $this->initTableMainPopulateData($sTab, $oScreen); } else if ('third' === $sInitType) { $this->initTableMainSwitchersPost($sTab, $oScreen); } } } /** * @param string $sTab * @param ap_Screen $oScreen */ protected function initTableTopMenu($sTab, ap_Screen &$oScreen) {} /** * @param string $sTab * @param ap_Screen $oScreen */ protected function initTableListHeaders($sTab, ap_Screen &$oScreen) {} /** * @param string $sTab * @param ap_Screen $oScreen */ protected function initTableList($sTab, ap_Screen &$oScreen) {} /** * @param string $sTab * @param ap_Screen $oScreen */ protected function initTableListFilter($sTab, ap_Screen &$oScreen) {} /** * @param string $sTab * @param ap_Screen $oScreen */ protected function initTableMainSwitchers($sTab, ap_Screen &$oScreen) {} /** * @param string $sTab * @param ap_Screen $oScreen */ protected function initTableMainSwitchersPre($sTab, ap_Screen &$oScreen) {} /** * @param string $sTab * @param ap_Screen $oScreen */ protected function initTableMainSwitchersPost($sTab, ap_Screen &$oScreen) {} /** * @param string $sTab * @param string $sMode * @param ap_Screen $oScreen */ protected function initTableMainPopulateData($sTab, ap_Screen &$oScreen) { if ($this->oPopulateData && $this->IsInTab($sTab)) { $sTabMode = ucfirst($sTab).'Main'.ucfirst($this->getQueryAction()); $oScreen->Data->SetValue('sysTab', $sTab); $oScreen->Data->SetValue('sysQueryAction', $this->getQueryAction()); CApi::Log('call '.get_class($this).'->PopulateData->'.$sTabMode.'()'); if (method_exists($this->oPopulateData, $sTabMode)) { $this->oPopulateData->{$sTabMode}($oScreen); } } } /** * @return string */ protected function getQueryAction() { $sResult = ''; foreach ($this->aQueryActions as $sKey) { if (isset($_GET[$sKey])) { $sResult = $sKey; break; } } return $sResult; } /** * @param string $sTab * @param ap_Screen $oScreen */ protected function initStandardMenuByTab($sTab, ap_Screen &$oScreen) {} /** * @param string $sTab * @param string $sMode * @param ap_Screen $oScreen */ protected function initStandardMainByTab($sTab, ap_Screen &$oScreen) { if ($this->oPopulateData && $this->IsInTab($sTab)) { $sMode = $oScreen->GetCurrentMode(); $sTabMode = ucfirst($sTab).ucfirst($sMode); CApi::Log('call '.get_class($this).'->PopulateData->'.$sTabMode.'()'); if (method_exists($this->oPopulateData, $sTabMode)) { $oScreen->Data->SetValue('sysTab', $sTab); $oScreen->Data->SetValue('sysMode', $sMode); $this->oPopulateData->{$sTabMode}($oScreen); } } } /** * @return string */ public function InitPostAction($sTab) { $sResult = false; if ($this->oStandardPostAction && $this->IsInTab($sTab)) { $sResult = '?root'; $sPostId = CPost::Get('form_id', 'null'); $sPostActionFunction = ucfirst($sTab).ucfirst($sPostId); $sPostActionFunction .= ('collection' === $sPostId && null !== CPost::Get('action', null)) ? ucfirst(CPost::Get('action', '')) : ''; CApi::Log('call '.get_class($this).'->StandardPostAction->'.$sPostActionFunction.'()'); if (!empty($sPostId) && method_exists($this->oStandardPostAction, $sPostActionFunction)) { $sActionResult = $this->oStandardPostAction->$sPostActionFunction(); if (!empty($this->oStandardPostAction->LastError)) { $this->oAdminPanel->ShowError($this->oStandardPostAction->LastError); } else if (!empty($this->oStandardPostAction->LastMessage)) { $this->oAdminPanel->ShowMessage($this->oStandardPostAction->LastMessage); } if (empty($sActionResult)) { $sResult = $sActionResult; } } } return $sResult; } /** * @return void */ public function InitPopAction($sTab) { if ($this->oStandardPostAction && $this->IsInTab($sTab)) { $sPopActionFunction = ucfirst($sTab); CApi::Log('call '.get_class($this).'->StandardPopAction->'.$sPopActionFunction.'()'); if (method_exists($this->oStandardPopAction, $sPopActionFunction)) { $this->oStandardPopAction->$sPopActionFunction(); } } } /** * @return void */ public function initBlankAction($sTab) { if ($this->oBlankAction && $this->IsInTab($sTab)) { $sType = isset($_GET['type']) ? $_GET['type'] : null; $sBlankActionFunction = ucfirst($sTab).ucfirst($sType); CApi::Log('call '.get_class($this).'->BlankAction->'.$sBlankActionFunction.'()'); if (method_exists($this->oBlankAction, $sBlankActionFunction)) { $this->oBlankAction->$sBlankActionFunction(); } } } /** * @return void */ public function InitAjaxAction($sPostName, $sTab, &$sMessage, &$sError, &$sRef) { if ($this->oTableAjaxAction && $this->IsInTab($sTab)) { $sQueryAction = CPost::Get('QueryAction', ''); $sAjaxActionFunction = ucfirst($sTab).ucfirst($sQueryAction). ((empty($sPostName)) ? '' : '_'.$sPostName); if (method_exists($this->oTableAjaxAction, $sAjaxActionFunction)) { CApi::Log('call '.get_class($this).'->TableAjaxAction->'.$sAjaxActionFunction.'()'); $this->oTableAjaxAction->$sAjaxActionFunction(); if (!empty($this->oTableAjaxAction->LastError)) { $sError = $this->oTableAjaxAction->LastError; } else if (!empty($this->oTableAjaxAction->LastMessage)) { $sMessage = $this->oTableAjaxAction->LastMessage; } if (!empty($this->oTableAjaxAction->Ref)) { $sRef = $this->oTableAjaxAction->Ref; } if (!empty($sError)) { CApi::Log('function '.$sAjaxActionFunction.'() return $sError = '.$sError, ELogLevel::Error); } } } } /** * @return void */ abstract protected function initInclude(); /** * @param string $sCssFile */ public function CssAddFile($sCssFile) { $this->oAdminPanel->CssAddFile($this->WebModulePath().'/js/'.$sCssFile); } /** * @param string $sJsFile */ public function JsAddFile($sJsFile) { $this->oAdminPanel->JsAddFile($this->WebModulePath().'/js/'.$sJsFile); } /** * @return string */ public function WebModulePath() { return $this->sWebModulePath; } /** * @return CAdminPanel */ public function &GetAp() { return $this->oAdminPanel; } } class ap_CoreModuleHelper { /** * @var CAdminPanel */ protected $oAdminPanel; /** * @var ap_Module */ protected $oModule; /** * @var api_Settings */ protected $oSettings; /** * @var string */ public $LastError; /** * @var string */ public $LastMessage; /** * @var string */ public $Ref; /** * @param ap_Module $oModule */ public function __construct(ap_Module &$oModule) { $this->oModule =& $oModule; $this->oAdminPanel =& $oModule->GetAp(); $this->oSettings =& CApi::GetSettings(); $this->LastError = ''; $this->LastMessage = ''; $this->Ref = ''; } /** * @return bool */ protected function saveSettingsXmlWithMessage() { return $this->checkBolleanWithMessage($this->oSettings->SaveToXml()); } /** * @param bool $bValue * @return bool */ protected function checkBolleanWithMessage($bValue) { if ($bValue) { $this->LastMessage = AP_LANG_SAVESUCCESSFUL; } else { $this->LastError = AP_LANG_SAVEUNSUCCESSFUL; } return $bValue; } /** * @param bool $bValue */ protected function checkBolleanDeleteWithMessage($bValue) { if ($bValue) { $this->LastMessage = AP_LANG_DELETE_SUCCESSFUL; } else { $this->LastError = AP_LANG_DELETE_UNSUCCESSFUL; } } /** * @return bool */ protected function isStandartSubmit() { return isset($_POST['submit_btn']); } }