2021-05-21 08:49:41 +02:00
< ? 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
include '_gen/adapterbox.php' ;
class Adapterbox extends GenAdapterbox {
/** @var Application $app */
var $app ;
/** @var null|bool $logging */
protected $logging = null ;
/**
* @ param string $key
* @ param string $deviceid
*
* @ return string
*/
public function generateHash ( $key , $deviceid )
{
//$date = gmdate('dmY');
$hash = '' ;
for ( $i = 0 ; $i <= 200 ; $i ++ ) {
$hash = sha1 ( $hash . $key . $deviceid );
}
return $hash ;
}
/**
* @ param Application $app
* @ param string $name
* @ param array $erlaubtevars
*
* @ return array
*/
public function TableSearch ( $app , $name , $erlaubtevars )
{
// in dieses switch alle lokalen Tabellen (diese Live Tabellen mit Suche etc.) für dieses Modul
switch ( $name ) {
case 'adapterbox_devicekeys' :
$validPass = $this -> app -> DB -> Select ( " SELECT devicekey FROM firmendaten WHERE devicekey!='' LIMIT 1 " );
$tmpdevices = $this -> app -> DB -> SelectPairs ( " SELECT bezeichnung, adapterboxseriennummer FROM drucker WHERE adapterboxseriennummer!='' AND aktiv='1' AND (anbindung='adapterbox' OR anbindung='spooler') " );
$tmpdevices2 = $this -> app -> DB -> SelectFirstCols ( " SELECT bezeichnung, seriennummer as adapterboxseriennummer FROM adapterbox WHERE seriennummer!='' " );
$tmpdevices = array_unique ( array_merge ( $tmpdevices , $tmpdevices2 ));
$col1 = '' ;
$col2 = '' ;
foreach ( $tmpdevices as $device ) {
$authkeys [ $device ] = $this -> generateHash ( $validPass , $device );
$col1 .= sprintf ( "
IF (
adapterboxseriennummer = '%s' , '%s' , " ,
$this -> app -> DB -> real_escape_string ( $device ),
$this -> app -> DB -> real_escape_string ( $authkeys [ $device ])
);
$col2 .= sprintf ( "
IF (
seriennummer = '%s' , '%s' , " ,
$this -> app -> DB -> real_escape_string ( $device ),
$this -> app -> DB -> real_escape_string ( $authkeys [ $device ])
);
}
2022-06-10 11:28:28 +02:00
$col1 .= " '' " . str_repeat ( ')' , ( ! empty ( $tmpdevices ) ? count ( $tmpdevices ) : 0 ));
$col2 .= " '' " . str_repeat ( ')' , ( ! empty ( $tmpdevices ) ? count ( $tmpdevices ) : 0 ));
2021-05-21 08:49:41 +02:00
$heading = [ 'Typ' , 'Bezeichnung' , 'Seriennummer' , 'AuthKey' , '' ];
$width = [ '10%' , '20%' , '20%' , '20%' , '1%' ];
$findcols = [
't.typ' , 't.bezeichnung' , 't.adapterboxseriennummer' , 't.auth' , 't.id'
];
$sql = " SELECT SQL_CALC_FOUND_ROWS t.id,t.typ,t.bezeichnung, t.adapterboxseriennummer,
t . auth , t . id FROM
((
SELECT 'Adpaterbox' as Typ , bezeichnung , adapterboxseriennummer , $col1 AS auth , id FROM drucker
WHERE adapterboxseriennummer != '' AND aktiv = '1' AND ( anbindung = 'adapterbox' OR anbindung = 'spooler' )
) UNION ALL (
SELECT 'Drucker' as Typ ,
bezeichnung , seriennummer as adapterboxseriennummer , $col2 AS auth , id FROM adapterbox WHERE seriennummer != ''
)) AS t
" ;
break ;
case 'adapterbox_request_logs' :
$validPass = $this -> app -> DB -> Select ( " SELECT devicekey FROM firmendaten WHERE devicekey!='' LIMIT 1 " );
$passes = $this -> app -> DB -> SelectFirstCols ( 'SELECT DISTINCT validpass FROM adapterbox_request_log WHERE validpass != \'\'' );
$allPasses = [];
if ( ! empty ( $validPass )) {
$allPasses [] = $validPass ;
}
$allPasses = array_unique ( array_merge ( $allPasses , $passes ));
$devices = $this -> app -> DB -> SelectFirstCols ( 'SELECT DISTINCT device FROM adapterbox_request_log WHERE device != \'\'' );
$tmpdevices = $this -> app -> DB -> SelectFirstCols ( " SELECT adapterboxseriennummer FROM drucker WHERE adapterboxseriennummer!='' AND aktiv='1' AND (anbindung='adapterbox' OR anbindung='spooler') " );
$tmpdevices2 = $this -> app -> DB -> SelectFirstCols ( " SELECT seriennummer as adapterboxseriennummer FROM adapterbox WHERE seriennummer!='' " );
$tmpdevices = array_unique ( array_merge ( $tmpdevices , $tmpdevices2 ));
$alldevices = array_unique ( array_merge ( $tmpdevices , $devices ));
$authkeys = [];
$countKeys = 0 ;
$colAuthNeeded = ' IF (
arl . success OR arl . auth = \ ' \ ' AND arl . digets <> \ ' \ ' ,
arl . auth , ' ;
foreach ( $alldevices as $device ) {
foreach ( $allPasses as $pass ) {
$authkeys [ $device ][ $pass ] = $this -> generateHash ( $pass , $device );
$colAuthNeeded .= sprintf ( "
IF (
arl . device = '%s' AND arl . validpass = '%s' , '%s' , " ,
$this -> app -> DB -> real_escape_string ( $device ),
$this -> app -> DB -> real_escape_string ( $pass ),
$this -> app -> DB -> real_escape_string ( $authkeys [ $device ][ $pass ])
);
$countKeys ++ ;
}
}
/* foreach ( $authkeys as $device => $authArr ) {
foreach ( $authArr as $pass )
} */
$colAuthNeeded .= " '' " . str_repeat ( ')' , $countKeys + 1 );
$heading = [ 'Datum' , 'IP' , 'Device' , 'Auth gesendet' , 'Auth benötigt' , 'Digets' , 'Status' , 'color' , 'Menü' ];
$width = [ '10%' , '10%' , '10%' , '20%' , '20%' , '20%' , '10%' , '1%' ];
$findcols = [
'arl.created_at' , 'arl.ip' , 'arl.device' , 'arl.auth' , $colAuthNeeded , 'arl.digets' ,
" IF(arl.success=1,'OK','Fehler') " , 'arl.success' , 'arl.id'
];
$searchsql = [ 'arl.ip' , 'arl.device' , 'arl.auth' ];
$datecols = [ 0 ];
$where = '' ;
$menu = '' ;
$trcol = 7 ;
$sql = " SELECT SQL_CALC_FOUND_ROWS arl.id,
DATE_FORMAT ( arl . created_at , '%d.%m.%Y %H:%i:%s' ), arl . ip ,
arl . device , arl . auth , $colAuthNeeded , arl . digets , IF ( arl . success = 1 , 'OK' , 'Fehler' ), IF ( arl . success = 1 , '#D2EC9D' , '#F1B19F' ), arl . id
FROM adapterbox_request_log AS arl " ;
$defaultorder = 1 ;
$defaultorderdesc = 1 ;
break ;
case 'adapterbox_list' :
$allowed [ 'adapterbox' ] = array ( 'list' );
// START EXTRA checkboxen
// ENDE EXTRA checkboxen
// headings
$heading = array ( 'Bezeichnung' , 'Seriennummer' , 'Verwenden als' , 'Letzte IP' , 'Status' , 'Menü' );
$width = array ( '40%' , '35%' , '15%' , '15%' , '5%' );
$findcols = array ( 'a.bezeichnung' , 'a.seriennummer' , 'a.verwendenals' , 'a.tmpip' , 'a.letzteverbindung' , 'a.id' );
$searchsql = array ( 'a.bezeichnung' , 'a.seriennummer' , 'a.verwendenals' , 'a.tmpip' , 'a.id' );
$defaultorder = 1 ; // sortiert nach dem oeffnen nach spalte 2
$defaultorderdesc = 0 ; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen)
$menu = '<table cellpadding=0 cellspacing=0><tr><td nowrap>' .
'<a href="index.php?module=adapterbox&action=endgeraet&id=%value%">' .
" <img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" ></a> " . " " . " <a href= \" index.php?module=adapterbox&action=download&id=%value% \" > " . " <img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/download.svg \" border= \" 0 \" ></a> " . " " . " <a href= \" # \" onclick=DeleteDialog( \" index.php?module=adapterbox&action=delete&id=%value% \" );> " . " <img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" ></a> " .
' </td></tr></table>' ;
// SQL statement
$sql = " SELECT SQL_CALC_FOUND_ROWS a.id, if(a.bezeichnung='','Ohne Bezeichnung',a.bezeichnung) as bezeichnung, a.seriennummer, if(a.verwendenals='' || a.verwendenals='etikettendrucker','Etikettendrucker',if(a.verwendenals='waage','Waage',if(a.verwendenals='kamera','Kamera',if(a.verwendenals='metratecrfid','RFID-Leser',if(a.verwendenals='bondrucker','Bondrucker',a.verwendenals))))),a.tmpip,if(TIME_TO_SEC(TIMEDIFF(NOW(),a.letzteverbindung)) > 10 OR a.letzteverbindung IS NULL,'disconnected','connected'),a.id
FROM adapterbox a " ;
$count = 'SELECT COUNT(id) FROM adapterbox' ;
break ;
case 'adapterbox_jobs' :
$allowed [ 'adapterbox' ] = array ( 'jobs' );
$heading = array ( 'Sender' , 'Empfänger' , 'art' , 'Zeit' , 'Menü' );
$width = array ( '20%' , '20%' , '20%' , '20%' , '10%' );
$findcols = array ( 'd.deviceidsource' , 'd.deviceiddest' , 'd.art' , 'd.zeitstempel' , 'd.id' );
$searchsql = array ( 'd.deviceidsource' , 'd.deviceiddest' , 'd.art' , 'd.zeitstempel' );
$menu = '<table cellpadding=0 cellspacing=0><tr><td nowrap>' .
" <a href= \" # \" onclick=DeleteDialog( \" index.php?module=adapterbox&action=deletejob&id=%value% \" );> " .
" <img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" ></a> " .
' </td></tr></table>' ;
// SQL statement
$sql = ' SELECT SQL_CALC_FOUND_ROWS d . id , d . deviceidsource , d . deviceiddest , d . art , d . zeitstempel ,
d . id FROM device_jobs d ' ;
$where = '' ; //d.firma='" . $this->app->User->GetFirma() . "'";
$count = 'SELECT COUNT(d.id) FROM device_jobs AS d' ;
break ;
case 'adapterbox_log' :
$allowed [ 'adapterbox' ] = array ( 'list' );
$heading = array ( 'Zeit' , 'IP' , 'Seriennummer' , 'Meldung' , 'Menü' );
$width = array ( '15%' , '15%' , '15%' , '40%' , '10%' );
$findcols = array ( 'a.datum' , 'a.ip' , 'a.seriennummer' , 'a.meldung' , 'a.id' );
$searchsql = array ( " DATE_FORMAT(a.datum,'%d.%m.%Y %H:%i:%s') " , 'a.ip' , 'a.meldung' , 'a.seriennummer' );
$defaultorder = 5 ;
$defaultorderdesc = 1 ;
$menu = '<table cellpadding=0 cellspacing=0><tr><td nowrap>' .
" <a href= \" # \" onclick=DeleteDialog( \" index.php?module=adapterbox&action=deletelog&id=%value% \" );> " . " <img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" ></a> " .
' </td></tr></table>' ;
// SQL statement
$sql = " SELECT SQL_CALC_FOUND_ROWS a.id, DATE_FORMAT(a.datum,'%d.%m.%Y %H:%i:%s'), a.ip, a.seriennummer, a.meldung, a.id FROM adapterbox_log a " ;
$count = 'SELECT COUNT(a.id) FROM adapterbox_log a' ;
break ;
}
$erg = [];
foreach ( $erlaubtevars as $k => $v ) {
if ( isset ( $$v )) {
$erg [ $v ] = $$v ;
}
}
return $erg ;
}
/**
* Adapterbox constructor .
*
* @ param Application $app
* @ param bool $intern
*/
public function __construct ( $app , $intern = false ) {
//parent::GenAdapterbox($app);
$this -> app = $app ;
if ( $intern ) {
return ;
}
$this -> app -> ActionHandlerInit ( $this );
$this -> app -> ActionHandler ( " create " , " AdapterboxCreate " );
$this -> app -> ActionHandler ( " edit " , " AdapterboxEdit " );
$this -> app -> ActionHandler ( " delete " , " AdapterboxDelete " );
$this -> app -> ActionHandler ( " deletelog " , " AdapterboxDeleteLog " );
$this -> app -> ActionHandler ( " list " , " AdapterboxList " );
$this -> app -> ActionHandler ( " log " , " AdapterboxLog " );
$this -> app -> ActionHandler ( " jobs " , " AdapterboxJobs " );
$this -> app -> ActionHandler ( " schritt2 " , " AdapterboxSchritt2 " );
$this -> app -> ActionHandler ( " download " , " AdapterboxDownload " );
$this -> app -> ActionHandler ( " endgeraet " , " AdapterboxEndgeraet " );
$this -> app -> ActionHandler ( " testdruck " , " AdapterboxTestdruck " );
$this -> app -> ActionHandler ( " testbild " , " AdapterboxTestbild " );
$this -> app -> ActionHandler ( " deletejob " , " AdapterboxDeletejob " );
$this -> app -> ActionHandler ( " deletejobs " , " AdapterboxDeletejobs " );
$this -> app -> ActionHandler ( " demo " , " AdapterboxDemo " );
$this -> app -> ActionHandler ( " log " , " AdapterboxLogs " );
$this -> app -> ActionHandlerListen ( $app );
}
public function AdapterboxLogs ()
{
$this -> AdapterboxMenu ();
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'adapterbox_devicekeys' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__ );
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'adapterbox_request_logs' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'tabview.tpl' );
}
public function AdapterboxSchritt2 ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$this -> AdapterboxMenuSchritte ();
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" warning \" >Konfiguration Übertragen. <br>Anschließend <a href= \" index.php?module=adapterbox&action=endgeraet&id= $id\ " > weiter mit Schritt 3 </ a >.</ div > " );
$this -> app -> Tpl -> Set ( 'ID' , $id );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'adapterbox_schritt2.tpl' );
}
public function AdapterboxEndgeraet ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$submit = $this -> app -> Secure -> GetPOST ( 'submit' );
$seriennummer = $this -> app -> Secure -> GetPOST ( 'seriennummer' );
$bezeichnung = $this -> app -> Secure -> GetPOST ( 'bezeichnung' );
$verwendenals = $this -> app -> Secure -> GetPOST ( 'verwendenals' );
$model = $this -> app -> Secure -> GetPOST ( 'model' );
$baudrate = $this -> app -> Secure -> GetPOST ( 'baudrate' );
$this -> AdapterboxMenuSchritte ();
if ( $submit )
{
$this -> app -> DB -> Update ( " UPDATE adapterbox SET seriennummer=' $seriennummer ',verwendenals=' $verwendenals ',bezeichnung=' $bezeichnung ',model=' $model ',baudrate=' $baudrate ' WHERE id=' $id ' LIMIT 1 " );
$iddrucker = $this -> app -> DB -> Select ( " SELECT id FROM drucker WHERE adapterboxseriennummer=' $seriennummer ' AND adapterboxseriennummer!='' AND art=2 LIMIT 1 " );
$idseriennummer = $this -> app -> DB -> Select ( " SELECT COUNT(id) FROM adapterbox WHERE seriennummer=' $seriennummer ' AND seriennummer!='' LIMIT 1 " );
//$this->app->Tpl->Set(MESSAGE,"<div class=\"info\">Die Einstellung wurde gespeichert!</div>");
if ( $idseriennummer >= 2 ) {
$this -> app -> Tpl -> Set ( 'MESSAGE' , '<div class="error">Achtung, es gibt bereits eine Adapterboxen mit der Seriennummer $seriennummer.</div>' );
}
if ( $verwendenals == '' || $verwendenals === 'etikettendrucker' )
{
if ( $iddrucker <= 0 )
{
// pruefe ob es namen schon gibt
$checkname = $this -> app -> DB -> Select ( " SELECT id FROM drucker WHERE name LIKE ' $bezeichnung ' LIMIT 1 " );
if ( $checkname <= 0 && $bezeichnung != '' && $seriennummer != '' && $idseriennummer < 2 )
{
//drucker anlegen
$this -> app -> DB -> Insert ( " INSERT INTO drucker (id,name,art,adapterboxseriennummer,aktiv,anbindung,firma) VALUES ('',' $bezeichnung ','2',' $seriennummer ',1,'adapterbox',1) " );
$iddrucker = $this -> app -> DB -> GetInsertID ();
$this -> app -> DB -> Update ( " UPDATE adapterbox SET bezeichnung=' $bezeichnung ' WHERE id=' $id ' LIMIT 1 " );
} else {
if ( $checkname > 0 )
$this -> app -> Tpl -> Set ( 'MESSAGE' , " <div class= \" error \" >Es gibt bereits einen Drucker mit dem gleichen Namen! Bitte wählen Sie einen anderen Namen.</div> " );
else
$this -> app -> Tpl -> Set ( 'MESSAGE' , " <div class= \" error \" >Bitte füllen Sie alle Felder aus!</div> " );
}
} else {
if ( $idseriennummer < 2 )
{
$this -> app -> DB -> Update ( " UPDATE drucker SET name=' $bezeichnung ' WHERE adapterboxseriennummer=' $seriennummer ' AND adapterboxseriennummer!='' LIMIT 1 " );
$this -> app -> DB -> Update ( " UPDATE adapterbox SET bezeichnung=' $bezeichnung ' WHERE id=' $id ' LIMIT 1 " );
}
}
$standarddrucker = $this -> app -> erp -> Firmendaten ( 'standardetikettendrucker' );
$checkstandarddrucker = $this -> app -> DB -> Select ( " SELECT id FROM drucker WHERE id=' $standarddrucker ' LIMIT 1 " );
if ( $standarddrucker <= 0 || $checkstandarddrucker <= 0 )
{
$this -> app -> erp -> FirmendatenSet ( 'standardetikettendrucker' , $iddrucker );
}
$standarddrucker = $this -> app -> erp -> Firmendaten ( 'etikettendrucker_wareneingang' );
$checkstandarddrucker = $this -> app -> DB -> Select ( " SELECT id FROM drucker WHERE id=' $standarddrucker ' LIMIT 1 " );
if ( $standarddrucker <= 0 || $checkstandarddrucker <= 0 )
{
$this -> app -> erp -> FirmendatenSet ( 'etikettendrucker_wareneingang' , $iddrucker );
}
}
// pruefe ob es einen standard etikettendrucker gibt wenn nicht lege ihn an
}
$verwendenals = $this -> app -> DB -> Select ( " SELECT verwendenals FROM adapterbox WHERE id=' $id ' LIMIT 1 " );
$baudrate = $this -> app -> DB -> Select ( " SELECT baudrate FROM adapterbox WHERE id=' $id ' LIMIT 1 " );
$model = $this -> app -> DB -> Select ( " SELECT model FROM adapterbox WHERE id=' $id ' LIMIT 1 " );
if ( $idseriennummer < 2 )
{
$seriennummer = $this -> app -> DB -> Select ( " SELECT seriennummer FROM adapterbox WHERE id=' $id ' LIMIT 1 " );
}
else {
$seriennummer = '' ;
}
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" warning \" >Druckerbezeichnung frei vergeben und Seriennummer der Adapterbox eintragen. Dann einmal Speichern drücken und auf den Reiter \" Schritt 4 - Demo \" wechseln. Bzw. auf die <a href= \" index.php?module=adapterbox&action=list \" >Übersicht</a> gehen und prüfen ob die Adapterbox vom Status auf \" connected \" wechselt.</div> " );
$iddrucker = $this -> app -> DB -> Select ( " SELECT id FROM drucker WHERE adapterboxseriennummer=' $seriennummer ' AND adapterboxseriennummer!='' AND art=2 LIMIT 1 " );
if ( $iddrucker > 0 && ( $verwendenals == '' || $verwendenals === 'etikettendrucker' ))
{
$name_drucker = $this -> app -> DB -> Select ( " SELECT name FROM drucker WHERE adapterboxseriennummer=' $seriennummer ' AND art=2 LIMIT 1 " );
//$this->app->Tpl->Add(MESSAGE,"<div class=\"warning\">Nach dem Anstecken kann es ca. 1-2 Minuten dauern bis die ersten Testetiketten aus dem Drucker kommen.</div>");
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" info \" >Einen <a href= \" index.php?module=adapterbox&action=testdruck&id= $id\ " > Testdruck </ a > ( kann das erste Mal einige Sekunden dauern ) durchf & uuml ; hren oder das < a href = \ " index.php?module=drucker&action=edit&id= $iddrucker\ " target = \ " _blank \" >Etikettenformat</a> (Menüpunkt Drucker) einstellen.</div> " );
} else {
$name_drucker = $this -> app -> DB -> Select ( " SELECT bezeichnung FROM adapterbox WHERE id=' $id ' LIMIT 1 " );
}
$options = '' ;
$tmp = array ( 'marel' => 'Marel' , 'pce' => 'PCE' , 'sartorius' => 'Sartorius' );
foreach ( $tmp as $key => $value )
{
if ( $key == $model ){
$options .= " <option value= \" $key\ " selected > " . $value . '</option>';
}
else {
$options .= " <option value= \" $key\ " > " . $value . '</option>';
}
}
$this -> app -> Tpl -> Set ( 'MODEL' , $options );
$options = " " ;
$tmp = array ( '1' => '4800' , '2' => '9600' );
foreach ( $tmp as $key => $value )
{
if ( $key == $baudrate ){
$options .= " <option value= \" $key\ " selected > " . $value . '</option>';
}
else {
$options .= " <option value= \" $key\ " > " . $value . '</option>';
}
}
$this -> app -> Tpl -> Set ( 'BAUDRATE' , $options );
$options = '' ;
$tmp = array ( 'etikettendrucker' => 'Etikettendrucker' , 'waage' => 'Waage' , 'kamera' => 'Kamera' , 'bondrucker' => 'Bondrucker' , 'display' => 'POS Display' , 'metratecrfid' => 'RFID-Leser' , 'rksvlight' => 'RKSV Light Smartcard' );
foreach ( $tmp as $key => $value )
{
if ( $key == $verwendenals ){
$options .= " <option value= \" $key\ " selected > " . $value . '</option>';
}
else {
$options .= " <option value= \" $key\ " > " . $value . '</option>';
}
}
$this -> app -> Tpl -> Set ( 'VERWENDENALS' , $options );
$this -> app -> Tpl -> Set ( 'SERIENNUMMER' , $seriennummer );
$this -> app -> Tpl -> Set ( 'BEZEICHNUNG' , $name_drucker );
$this -> app -> Tpl -> Set ( 'ID' , $id );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'adapterbox_endgeraet.tpl' );
}
public function AdapterboxDownload ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$tmp = $this -> app -> DB -> SelectArr ( " SELECT * FROM adapterbox WHERE id=' $id ' LIMIT 1 " );
$url = 'http://' . $_SERVER [ 'HTTP_HOST' ] . $_SERVER [ 'REQUEST_URI' ];
$url_parts = parse_url ( $url );
if ( strpos ( $_SERVER [ 'HTTP_X_FORWARDED_PROTO' ], 'https' ) !== false )
$_SERVER [ 'HTTPS' ] = 'on' ;
if ( isset ( $_SERVER [ 'HTTPS' ])) {
if ( $_SERVER [ 'HTTPS' ] == 'on' ) {
$secure_connection = true ;
$url_parts [ 'scheme' ] = 'https' ;
}
}
if ( $url_parts [ 'hostname' ] == '' ) {
if ( $url_parts [ 'port' ] != '' ){
$url_parts [ 'hostname' ] = $url_parts [ 'host' ] . ':' . $url_parts [ 'port' ];
}
else {
$url_parts [ 'hostname' ] = $url_parts [ 'host' ];
}
}
$url_parts [ 'path' ] = str_replace ( 'index.php' , '' , $url_parts [ 'path' ]);
$constructed_url = $url_parts [ 'scheme' ] . '://' . $url_parts [ 'hostname' ] . rtrim ( $url_parts [ 'path' ], '/' );
$devicekey = $this -> app -> erp -> Firmendaten ( 'devicekey' );
header ( 'Content-type: text/plain' );
header ( 'Content-Disposition: attachment; filename=wawision.php' );
echo '<?php' . " \r \n " ;
echo '$settings["url"]="' . $constructed_url . '";' . " \r \n " ;
echo '$settings["devicekey"]="' . $devicekey . '";' . " \r \n " ;
echo '$settings["serial"]="' . $tmp [ 0 ][ 'seriennummer' ] . '";' . " \r \n " ;
echo '?>' ;
exit ;
}
public function AdapterboxCreate ()
{
$this -> app -> DB -> Insert ( 'INSERT INTO adapterbox (id) VALUES (NULL)' );
$id = $this -> app -> DB -> GetInsertID ();
header ( 'Location: index.php?module=adapterbox&action=edit&id=' . $id );
exit ;
}
/**
* @ return bool
*/
public function isLoggingActive ()
{
if ( $this -> logging !== null ) {
return ( bool ) $this -> logging ;
}
$loggingActive = ( string ) $this -> app -> erp -> GetKonfiguration ( 'adapterbox_logging_active' );
if ( $loggingActive === '' ) {
$this -> app -> erp -> SetKonfigurationValue ( 'adapterbox_logging_active' , '0' );
$this -> logging = false ;
return false ;
}
$this -> logging = ( bool ) $loggingActive ;
return $this -> logging ;
}
public function AdapterboxList ()
{
$this -> AdapterboxMenu ();
$isLoggingActive = $this -> isLoggingActive ();
if ( $isLoggingActive ) {
$this -> app -> Tpl -> Set ( 'LOGGINGACTIVE' , 'checked' );
}
$this -> app -> YUI -> AutoSaveKonfiguration ( 'logginActive' , 'adapterbox_logging_active' );
$devicekey = $this -> app -> erp -> Firmendaten ( 'devicekey' );
if ( $devicekey == '' )
{
$this -> app -> Tpl -> Set ( 'MESSAGE' , '<div class="error">Aktuell ist kein API Schlüssel hinterlegt! Für die Adapterboxen benötigen Sie diesen! <a href="index.php?module=firmendaten&action=edit#tabs-11">aktivieren</a></div>' );
}
$deviceenable = $this -> app -> erp -> Firmendaten ( 'deviceenable' );
if ( $deviceenable != '1' )
{
$this -> app -> Tpl -> Add ( 'MESSAGE' , '<div class="error">Aktuell ist die API nicht aktiviert! Bitte aktivieren Sie diese! <a href="index.php?module=firmendaten&action=edit#tabs-11">aktivieren</a></div>' );
}
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'adapterbox_list' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'adapterbox_overview.tpl' );
}
public function AdapterboxDelete ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
if ( is_numeric ( $id ))
{
$this -> app -> DB -> Delete ( " DELETE FROM adapterbox WHERE id=' $id ' " );
}
//$this->AdapterboxList();
header ( 'Location: index.php?module=adapterbox&action=list' );
exit ;
}
public function AdapterboxMenuSchritte ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$data = $this -> app -> DB -> SelectRow ( " SELECT * FROM adapterbox WHERE id=' $id ' LIMIT 1 " );
if ( ! empty ( $data )){
$this -> app -> Tpl -> Set ( 'KURZUEBERSCHRIFT1' , $data [ 'verwendenals' ]);
$this -> app -> Tpl -> Add ( 'KURZUEBERSCHRIFT2' , 'SN: ' . $data [ 'seriennummer' ]);
}
$this -> app -> erp -> MenuEintrag ( " index.php?module=adapterbox&action=edit&id= $id " , 'Schritt 1 - Netzwerkkonfiguration' );
$this -> app -> erp -> MenuEintrag ( " index.php?module=adapterbox&action=schritt2&id= $id " , 'Schritt 2 - Konfiguration übertragen' );
$this -> app -> erp -> MenuEintrag ( " index.php?module=adapterbox&action=endgeraet&id= $id " , 'Schritt 3 - Endgerät einstellen' );
$this -> app -> erp -> MenuEintrag ( " index.php?module=adapterbox&action=demo&id= $id " , 'Schritt 4 - Demo' );
// $this->app->erp->MenuEintrag("index.php?module=adapterbox&action=list","Zurück zur Übersicht");
}
public function AdapterboxDemo ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$this -> AdapterboxMenuSchritte ();
$data = $this -> app -> DB -> SelectArr ( " SELECT * FROM adapterbox WHERE id=' $id ' LIMIT 1 " );
$data = reset ( $data );
switch ( $data [ 'verwendenals' ])
{
case 'waage' :
$gewicht = $this -> app -> erp -> GetAdapterboxAPIWaage ( $data [ 'seriennummer' ]);
if ( $gewicht != '' ){
$gewicht = " Ergebnis: <br><br><textarea rows=10 cols=40> $gewicht </textarea> " ;
}
$this -> app -> Tpl -> Set ( 'TAB1' , " <div class= \" info \" >Zum Testen bitte klicken: <input type= \" button \" value= \" Gewicht abholen \"
onclick = \ " window.location.href='index.php?module=adapterbox&action=demo&id= $id ' \" ></div><br> $gewicht " );
break ;
case 'rksvlight' :
$result = $this -> app -> erp -> GetAdapterboxAPIRKSVlight ( $data [ 'seriennummer' ], " -getcardnumber -reader 0 " );
if ( $result != '' ){
$result = " Ergebnis: <br><br><textarea rows=10 cols=40> $result </textarea> " ;
}
$this -> app -> Tpl -> Set ( 'TAB1' , " <div class= \" info \" >Zum Testen bitte klicken: <input type= \" button \" value= \" Kartennummer abfragen \"
onclick = \ " window.location.href='index.php?module=adapterbox&action=demo&id= $id ' \" ></div><br> $result " );
break ;
case 'kamera' :
$this -> app -> Tpl -> Set ( 'TAB1' , " <div class= \" info \" >Zum Testen bitte klicken: <input type= \" button \" value= \" Bild abholen \"
onclick = \ " window.location.href='index.php?module=adapterbox&action=demo&id= $id ' \" ></div><img src= \" index.php?module=adapterbox&action=testbild&id= $id\ " > " );
break ;
case 'etikettendrucker' :
$seriennummer = $data [ 'seriennummer' ];
$druckercode = $this -> app -> DB -> Select ( " SELECT id FROM drucker WHERE adapterboxseriennummer=' $seriennummer ' AND adapterboxseriennummer!='' AND art=2 LIMIT 1 " );
$this -> app -> erp -> EtikettenDrucker ( " etikettendrucker_einfach " , 1 , " " , " " , array ( 'bezeichnung1' => 'Xentral' , 'bezeichnung2' => 'www.xentral.com' ), " " , $druckercode );
$this -> app -> Tpl -> Set ( 'TAB1' , " <div class= \" info \" >Zum Testen bitte klicken: <input type= \" button \" value= \" Testdruck starten \"
onclick = \ " window.location.href='index.php?module=adapterbox&action=demo&id= $id ' \" ></div> " );
break ;
case 'display' :
$seriennummer = $data [ 'seriennummer' ];
$this -> app -> erp -> GetAdapterboxAPIDisplay ( $seriennummer , array ( 'Xentral POS' , 'www.xentral.com' ));
$this -> app -> Tpl -> Set ( 'TAB1' , " <div class= \" info \" >Zum Testen bitte klicken: <input type= \" button \" value= \" Testausgabe starten \"
onclick = \ " window.location.href='index.php?module=adapterbox&action=demo&id= $id ' \" ></div> " );
break ;
case 'bondrucker' :
$seriennummer = $data [ 'seriennummer' ];
$druckercode = $this -> app -> DB -> Select ( " SELECT id FROM drucker WHERE adapterboxseriennummer=' $seriennummer ' AND adapterboxseriennummer!='' AND art=2 LIMIT 1 " );
$printer = new phpprint ();
$printer -> newline ();
$printer -> set_font ( phpprint :: FONT_A );
$printer -> set_justification ( phpprint :: JUSTIFY_CENTER );
$printer -> enlargePrint ( true );
$printer -> text ( " Xentral Store \n " );
$printer -> newline ();
$printer -> enlargePrint ();
$printer -> text ( " Xentral ERP Software GmbH \n " );
$printer -> text ( " Fuggerstrasse 11 \n " );
$printer -> text ( " 86150 Augsburg \n " );
$printer -> text ( " Tel: 0821/26841041 \n " );
$printer -> text ( " www.wawision.de \n " );
$printer -> newline ();
$printer -> set_justification ( phpprint :: JUSTIFY_CENTER );
$printer -> feed ( 1 );
$beleg = rand ( 111111 , 999999 );
$printer -> qrCode ( md5 ( '123456789012345678901234567890' ), phpprint :: QR_ECLEVEL_L , 6 );
//$printer->generateBarcode($beleg, phpprint::BARCODE_CODE39, 80);
$printer -> cut ();
$printer -> pulse ();
$bon = base64_encode ( $printer -> str );
$this -> app -> erp -> GetAdapterboxAPIBondrucker ( $seriennummer , $bon );
$this -> app -> Tpl -> Set ( 'TAB1' , " <div class= \" info \" >Zum Testen bitte klicken: <input type= \" button \" value= \" Testdruck starten \"
onclick = \ " window.location.href='index.php?module=adapterbox&action=demo&id= $id ' \" ></div> " );
break ;
}
$this -> app -> Tpl -> Parse ( 'PAGE' , 'tabview.tpl' );
}
public function AdapterboxMenu ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
//$this->app->Tpl->Add(KURZUEBERSCHRIFT,"Adapterbox");
$this -> app -> erp -> MenuEintrag ( 'index.php?module=adapterbox&action=list' , 'Übersicht' );
$this -> app -> erp -> MenuEintrag ( 'index.php?module=adapterbox&action=jobs' , 'Device Jobs' );
$this -> app -> erp -> MenuEintrag ( 'index.php?module=adapterbox&action=log' , 'Logs' );
//$this->app->erp->MenuEintrag("index.php?module=adapterbox&action=log","Log");
$this -> app -> erp -> MenuEintrag ( 'index.php?module=adapterbox&action=create' , 'Neu' );
if ( $this -> app -> Secure -> GetGET ( 'action' ) === 'list' ){
$this -> app -> erp -> MenuEintrag ( 'index.php?module=einstellungen&action=list' , 'Zurück zur Übersicht' );
}
else {
$this -> app -> erp -> MenuEintrag ( 'index.php?module=adapterbox&action=list' , 'Zurück zur Übersicht' );
}
}
public function AdapterboxDeletejobs ()
{
$msg = $this -> app -> erp -> base64_url_encode ( '<div class="info">Die Jobs wurden gelöscht!</div> ' );
$this -> app -> DB -> Delete ( 'DELETE FROM device_jobs' );
header ( 'Location: index.php?module=adapterbox&action=jobs&msg=' . $msg );
exit ;
}
public function AdapterboxDeletejob ()
{
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$msg = $this -> app -> erp -> base64_url_encode ( '<div class="info">Der Job wurde gelöscht!</div> ' );
if ( $id > 0 ){
$this -> app -> DB -> Delete ( " DELETE FROM device_jobs WHERE id=' $id ' " );
}
header ( " Location: index.php?module=adapterbox&action=jobs&msg= $msg " );
exit ;
}
public function AdapterboxJobs ()
{
$this -> AdapterboxMenu ();
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'adapterbox_jobs' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Add ( 'TAB1' , " <center><input type= \" button \" value= \" Alle Einträge löschen \" onclick= \" window.location.href='index.php?module=adapterbox&action=deletejobs' \" ></center> " );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'tabview.tpl' );
}
public function AdapterboxEdit ()
{
$this -> AdapterboxMenuSchritte ();
$id = $this -> app -> Secure -> GetGET ( 'id' );
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" warning \" >Bitte richten Sie die Netzwerkverbindung an der Adapterbox ein. <br>Anschließend <a href= \" index.php?module=adapterbox&action=schritt2&id= $id\ " > weiter mit Schritt 2 </ a >.</ div > " );
parent :: AdapterboxEdit ();
}
public function AdapterboxLog ()
{
$this -> AdapterboxMenu ();
$this -> app -> DB -> Delete ( " DELETE FROM `adapterbox_log` WHERE id < SELECT MIN(id) FROM `adapterbox_log` ORDER BY id DESC LIMIT 0,100 " );
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'adapterbox_log' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'tabview.tpl' );
}
public function AdapterboxDeleteLog ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$this -> app -> DB -> Delete ( " DELETE FROM adapterbox_log WHERE id=' $id ' LIMIT 1 " );
$msg = $this -> app -> erp -> base64_url_encode ( '<div class="error2">Der Logeintrag wurde gelöscht!</div> ' );
header ( " Location: index.php?module=adapterbox&action=log&msg= $msg " );
exit ;
}
public function AdapterboxTestbild ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$seriennummer = $this -> app -> DB -> Select ( " SELECT seriennummer FROM adapterbox WHERE id=' $id ' LIMIT 1 " );
//$image = $this->app->erp->GetAdapterboxAPIImage($seriennummer,"480","360");
$image = $this -> app -> erp -> GetAdapterboxAPIImage ( $seriennummer , '800' , '600' );
//$image = $this->app->erp->GetAdapterboxAPIImage("999999999","960","720");
header ( 'Content-Type: image/jpeg' );
header ( 'Content-Length: ' . strlen ( $image ) );
echo ( $image );
exit ;
}
public function AdapterboxTestdruck ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$seriennummer = $this -> app -> DB -> Select ( " SELECT seriennummer FROM adapterbox WHERE id=' $id ' LIMIT 1 " );
$druckercode = $this -> app -> DB -> Select ( " SELECT id FROM drucker WHERE adapterboxseriennummer=' $seriennummer ' AND adapterboxseriennummer!='' AND art=2 LIMIT 1 " );
$this -> app -> erp -> EtikettenDrucker ( 'etikettendrucker_einfach' , 1 , '' , '' , array ( 'bezeichnung1' => 'Xentral' , 'bezeichnung2' => 'www.xentral.biz' ), '' , $druckercode );
header ( 'Location: index.php?module=adapterbox&action=endgeraet&id=' . $id );
exit ;
}
}