mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-26 14:40:29 +01:00
177 lines
4.8 KiB
PHP
177 lines
4.8 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
|
|
|
|
class Databaseviewer {
|
|
/** @var erpooSystem $app */
|
|
var $app;
|
|
|
|
/**
|
|
* @param Application $app
|
|
* @param string $name
|
|
* @param array $erlaubtevars
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function TableSearch($app, $name, $erlaubtevars)
|
|
{
|
|
// in dieses switch alle lokalen Tabellen (diese Live Tabellen mit Suche etc.) für dieses Modul
|
|
switch($name)
|
|
{
|
|
case 'database_table_view':
|
|
$table = $app->User->GetParameter('xcs_tree_name');
|
|
$cols = [];
|
|
if(!empty($table)) {
|
|
$columns = $app->DB->SelectArrCache(
|
|
sprintf(
|
|
'SHOW COLUMNS FROM `%s` ', $table), 60, 'xcs_column'
|
|
);
|
|
|
|
if(!empty($columns)) {
|
|
foreach($columns as $key => $column) {
|
|
$cols[] = reset($column);
|
|
if($key > 74) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$firstCol = reset($cols);
|
|
$heading = array_merge($cols, ['']);
|
|
$findcols = array_merge($cols, [$firstCol]);
|
|
$searchsql = $cols;
|
|
$sql = sprintf(
|
|
"SELECT `%s`, IFNULL(`%s`, '') FROM `%s`",
|
|
$firstCol, implode("`,''), IFNULL(`", $cols), $table
|
|
);
|
|
$fastcount = sprintf('SELECT COUNT(*) FROM `%s`', $table);
|
|
break;
|
|
}
|
|
|
|
$erg = [];
|
|
|
|
foreach($erlaubtevars as $k => $v) {
|
|
if(isset($$v)) {
|
|
$erg[$v] = $$v;
|
|
}
|
|
}
|
|
return $erg;
|
|
}
|
|
|
|
/**
|
|
* Databaseviewer constructor.
|
|
*
|
|
* @param Application $app
|
|
* @param bool $intern
|
|
*/
|
|
public function __construct($app, $intern = false) {
|
|
$this->app=$app;
|
|
if($intern) {
|
|
return;
|
|
}
|
|
$this->app->ActionHandlerInit($this);
|
|
|
|
// ab hier alle Action Handler definieren die das Modul hat
|
|
$this->app->ActionHandler("list", "DatabaseViewerList");
|
|
$this->app->ActionHandler("treeajax", "DatabaseViewerTreeAjax");
|
|
|
|
$this->app->ActionHandlerListen($app);
|
|
}
|
|
|
|
public function DatabaseViewerMenu()
|
|
{
|
|
$this->app->erp->MenuEintrag('index.php?module=databaseviewer&action=list', 'Übersicht');
|
|
}
|
|
|
|
public function DatabaseViewerList()
|
|
{
|
|
$cmd = $this->app->Secure->GetGET('cmd');
|
|
if($cmd === 'filtertree') {
|
|
$tableName = $this->app->Secure->GetPOST('name');
|
|
$this->app->User->SetParameter('xcs_tree_id',$this->app->Secure->GetPOST('id'));
|
|
$this->app->User->SetParameter('xcs_tree_name', $tableName);
|
|
$tableColumns = $this->app->DB->SelectArrCache(
|
|
sprintf(
|
|
'SHOW COLUMNS FROM `%s` ', $tableName), 60, 'xcs_column'
|
|
);
|
|
$html = '';
|
|
if((!empty($tableColumns)?count($tableColumns):0) > 75) {
|
|
$html = '<div class="warning">Die Tabellenansicht wurde auf 75 Spalten gekürzt</div>';
|
|
}
|
|
$this->app->YUI->TableSearch('PAGE', 'database_table_view', 'show', '', '', basename(__FILE__), __CLASS__);
|
|
$html .= $this->app->Tpl->FinalParse('databaseviewer_table.tpl');
|
|
echo json_encode(array('status'=>1,'html'=>$html));
|
|
$this->app->ExitXentral();
|
|
}
|
|
if($this->app->Secure->GetGET('module')==='databaseviewer'){
|
|
$this->DatabaseViewerMenu();
|
|
}
|
|
|
|
$this->app->erp->Headlines('Datenbank Ansicht');
|
|
$this->app->Tpl->Set(
|
|
'TREE',
|
|
'<div id="treediv">'.
|
|
$this->app->Tpl->Parse('return', 'databaseviewer_tree.tpl',true).
|
|
'</div>'
|
|
);
|
|
$this->app->Tpl->Parse('PAGE', 'databaseviewer_sqlviewer.tpl');
|
|
}
|
|
|
|
/**
|
|
* @param null|array $tables
|
|
*/
|
|
public function getTables(&$tables)
|
|
{
|
|
$res = $this->app->DB->SelectArrCache('SHOW TABLES',60, 'xcs_table');
|
|
if(empty($res)) {
|
|
return;
|
|
}
|
|
foreach($res as $table) {
|
|
$table = reset($table);
|
|
$tables[] = $table;
|
|
}
|
|
}
|
|
|
|
public function DatabaseViewerTreeAjax()
|
|
{
|
|
$disabled = false;
|
|
$tables = null;
|
|
$this->getTables($tables);
|
|
|
|
if(!empty($tables)) {
|
|
$maxlvl = 0;
|
|
foreach($tables as $k => $table) {
|
|
$name = 'node'.$k;
|
|
$$name = new stdClass();
|
|
$$name->id = $k;
|
|
$$name->label = $table;
|
|
$$name->checkbox = false;
|
|
$$name->inode = false;
|
|
$$name->radio = false;
|
|
if($disabled) {
|
|
$$name->disabled = true;
|
|
}
|
|
$baum[] = $$name;
|
|
}
|
|
echo json_encode($baum);
|
|
$this->app->erp->ExitWawi();
|
|
}
|
|
echo '[]';
|
|
$this->app->erp->ExitWawi();
|
|
}
|
|
|
|
}
|