OpenXE/phpwf/class.application.php
2021-05-21 08:49:41 +02:00

257 lines
8.3 KiB
PHP

<?php
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
*
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
*
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
* to obtain the text of the corresponding license version.
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/
?>
<?php
use Xentral\Components\Http\JsonResponse;
use Xentral\Components\Http\RedirectResponse;
function WithGUI($first = false)
{
if (defined('API_REQUEST') && (bool)API_REQUEST === true) {
return false;
}
if(isset($_GET['withgui']) && $_GET['withgui']){
return true;
}
$module = isset($_GET['module'])?$_GET['module']:'';
$action = isset($_GET['action'])?$_GET['action']:'';
if($action === 'editable') {
return false;
}
if(!$first && isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest'))
{
if($action === 'positionen' || strpos($action,'minidetail') === 0){
return true;
}
if($module === 'adresse'){
return true;
}
if($action === 'verkauf'){
return true;
}
return false;
}
return !($module==='ajax' || $module==='api'
|| ($module==='welcome' && $action==='css')
|| ($module==='report' && $action==='export')
|| ($module==='welcome' && $action==='cronjob')
|| ($module==='welcome' && $action==='adapterbox')
|| ($module==='welcome' && $action==='logo')
|| ($module==='artikel' && $action==='ajaxwerte')
|| ($module==='artikel' && $action==='thumbnail')
|| ($module==='wiki' && $action==='getfile')
|| ($module==='benutzer' && $action==='chrights')
|| ($module==='callcenter' && $action==='call')
|| ($module==='waage' && $action==='gewicht')
|| ($module==='welcome' && $action==='poll')
|| ($module==='artikel' && $action==='thumbnail')
);
}
//include ('phpwf/engine/class.engine.php';
if(WithGUI())
{
include dirname(__DIR__).'/phpwf/plugins/class.formhandler.php';
include dirname(__DIR__).'/phpwf/plugins/class.pagebuilder.php';
include dirname(__DIR__).'/phpwf/plugins/class.widgetapi.php';
include dirname(__DIR__).'/phpwf/widgets/easytable.php';
include dirname(__DIR__).'/phpwf/widgets/grouptable.php';
include dirname(__DIR__).'/phpwf/widgets/childtable.php';
include dirname(__DIR__).'/phpwf/widgets/table.php';
include dirname(__DIR__).'/phpwf/plugins/class.picosafelogin.php';
include dirname(__DIR__).'/phpwf/plugins/class.wawision_otp.php';
include dirname(__DIR__).'/phpwf/htmltags/all.php';
include dirname(__DIR__).'/phpwf/types/class.simplelist.php';
include dirname(__DIR__).'/phpwf/plugins/class.modulescriptcache.php';
}
include dirname(__DIR__).'/phpwf/plugins/class.templateparser.php';
//include dirname(__DIR__).'/phpwf/plugins/class.yui.php';
include dirname(__DIR__).'/phpwf/plugins/class.acl.php';
include dirname(__DIR__).'/phpwf/plugins/class.user.php';
include dirname(__DIR__).'/phpwf/plugins/class.page.php';
include dirname(__DIR__).'/phpwf/plugins/class.phpwfapi.php';
include dirname(__DIR__).'/phpwf/plugins/class.secure.php';
//if(is_file(__DIR__.'/www/lib/class.location.php'))@include (dirname(__DIR__).'/www/lib/class.location.php';
include dirname(__DIR__).'/phpwf/plugins/class.wfmonitor.php';
include dirname(__DIR__).'/phpwf/plugins/class.string.php';
include dirname(__DIR__).'/phpwf/plugins/class.objectapi.php';
/**
* @property Config $Conf
* @property Secure $Secure
* @property TemplateParser $Tpl
* @property FormHandler $FormHandler
* @property Table $Table
* @property WidgetAPI $Widget
* @property PageBuilder $PageBuilder
* @property Page $Page
* @property ObjectAPI $ObjAPI
* @property WFMonitor $WFM
* @property ModuleScriptCache $ModuleScriptCache
* @property YUI $YUI
* @property User $User
* @property Acl $acl
* @property phpWFAPI $WF
* @property WawiString $String
* @property DB $DB
*/
class Application extends ApplicationCore
{
public $ActionHandlerList;
public $ActionHandlerDefault;
public $http;
public $caller;
public $BuildNavigation;
public $PopupJS;
public $NoHooks;
public function __construct($config,$group='')
{
parent::__construct($config,$group);
/*if(!isset($_GET['module']) || $_GET['module'] != 'api') {
if(!(isset($_GET['module']) && isset($_GET['action']) && isset($_GET['cmd']) && $_GET['module'] == 'welcome' && (($_GET['action'] == 'login' && $_GET['cmd'] == 'checkrfid') || $_GET['action'] == 'cronjob' || $_GET['action'] == 'adapterbox'))) {
// @session_cache_limiter('private');
//@session_start();
}
}*/
$this->Conf= $config;
//include dirname(__DIR__).'/phpwf/plugins/class.mysql.php';
if(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS']==='on'){
$this->http = 'https';
}
else{
$this->http = 'http';
}
//$this->Secure = new Secure($this); // empty $_GET, and $_POST so you
// have to need the secure layer always
if(WithGUI()){
$this->Tpl = new TemplateParser($this);
$this->FormHandler = new FormHandler($this);
$this->Table = new Table($this);
$this->Widget = new WidgetAPI($this);
$this->PageBuilder = new PageBuilder($this);
$this->Page = new Page($this);
$this->ObjAPI = new ObjectAPI($this);
$this->WFM = new WFMonitor($this);
$this->ModuleScriptCache = new ModuleScriptCache();
}
//$this->YUI = new YUI($this);
//$this->User = new User($this);
//$this->acl = new Acl($this);
//$this->WF = new phpWFAPI($this);
//$this->String = new WawiString();
$this->BuildNavigation = true;
$this->PopupJS = false;
//$this->DB = new DB($this->Conf->WFdbhost,$this->Conf->WFdbname,$this->Conf->WFdbuser,$this->Conf->WFdbpass,$this);
if(WithGUI()){
$this->Tpl->ReadTemplatesFromPath(__DIR__ . '/widgets/templates/');
$this->Tpl->Set('LAYOUTFIXMARKERCLASS', 'layoutfix');
}
}
public function __destruct()
{
//$this->DB->Close();
}
public function ActionHandlerInit($caller)
{
$this->caller = $caller;
}
public function ActionHandler($command,$function)
{
$this->ActionHandlerList[$command]=$function;
}
public function DefaultActionHandler($command)
{
$this->ActionHandlerDefault=$command;
}
public function ActionHandlerListen($app)
{
$fkt = '';
$action = $app->Secure->GetGET('action');
$module = $app->Secure->GetGET('module');
if(!empty($this->ActionHandlerList)) {
$app->erp->addActionHandler($module, $this->ActionHandlerList);
}
if(!empty($action))
{
if(!empty($this->ActionHandlerList[$action]))
{
$fkt = $this->ActionHandlerList[$action];
}
}
else
{
if(empty($this->ActionHandlerDefault) && isset($this->ActionHandlerList['list']))
{
if(empty($action))
{
$app->Secure->GET['action'] = 'list';
}
$this->ActionHandlerDefault = 'list';
}
if(!empty($this->ActionHandlerDefault))
{
$fkt = $this->ActionHandlerList[$this->ActionHandlerDefault];
}
}
if(!empty($fkt)){
$callhooks = empty($this->NoHooks) || !in_array($action,$this->NoHooks);
if($callhooks){
$app->erp->RunHook($module . '_' . $action . '_before');
}
$response = @$this->caller->$fkt();
if($callhooks){
$app->erp->RunHook($module . '_' . $action . '_after');
}
if($response instanceof JsonResponse) {
$response->send();
$this->ExitXentral();
}
if($response instanceof RedirectResponse) {
$response->send();
$this->ExitXentral();
}
}
}
public function DisableLayoutFix()
{
if(WithGUI()){
$this->Tpl->Set('LAYOUTFIXMARKERCLASS', '');
}
}
}