app->Secure->GetGET('id'); switch ($name){ case 'druckerlist': $allowed['drucker'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Name', 'Bezeichnung', 'Anbindung', 'Aktiv', 'Menü'); $width = array('30%', '30%', '20%', '10%', '10%'); $findcols = array('d.name', 'd.bezeichnung', 'd.anbindung', "if(d.aktiv,'ja','nein')", 'd.id'); $searchsql = array('d.name', 'd.bezeichnung', 'd.anbindung', 'd.aktiv'); $defaultorder = 2; // sortiert nach dem oeffnen nach spalte 2 $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " ."" . "app->Conf->WFconf['defaulttheme']}/images/download.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS d.id, d.name, d.bezeichnung, CONCAT(d.anbindung,if(d.adapterboxseriennummer='','',' SN:'),d.adapterboxseriennummer), if(d.aktiv,'ja','nein') as aktiv, d.id FROM drucker d "; $where = '';//d.firma='" . $this->app->User->GetFirma() . "'"; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = 'SELECT COUNT(id) FROM drucker'; break; case 'drucker_spooler': $allowed['drucker'] = array('spooler'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Zeit', 'Dateiname', 'Bearbeiter','Gedruckt','Menü'); $width = array('30%', '30%', '20%', '10%','5%'); $findcols = array("d.zeitstempel", 'd.filename', 'a.name','d.gedruckt','d.id'); $searchsql = array("DATE_FORMAT(d.zeitstempel,'%d.%m.%Y %H:%i:%s')", 'd.filename', 'a.name'); // $defaultorder = 2; // sortiert nach dem oeffnen nach spalte 2 $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $datecols = array(0); $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/download.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS d.id, DATE_FORMAT(d.zeitstempel,'%d.%m.%Y %H:%i:%s'), if(d.filename!='',d.filename,'Kein Dateiname vorhanden'), a.name,if(d.gedruckt=1,'ja','') as gedruckt, d.id FROM drucker_spooler d LEFT JOIN user u ON u.id=d.user LEFT JOIN adresse a ON a.id=u.adresse "; $where = " d.drucker='$id' ";//d.firma='" . $this->app->User->GetFirma() . "'"; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM drucker_spooler WHERE drucker='$id'"; break; } $erg = []; foreach($erlaubtevars as $k => $v) { if(isset($$v)) { $erg[$v] = $$v; } } return $erg; } /** * Drucker constructor. * * @param Application $app * @param bool $intern */ public function __construct($app, $intern = false) { $this->app=$app; if($intern) { return; } $this->app->ActionHandlerInit($this); $this->app->ActionHandler("create","DruckerCreate"); $this->app->ActionHandler("edit","DruckerEdit"); $this->app->ActionHandler("delete","DruckerDelete"); $this->app->ActionHandler("spoolerdelete","DruckerSpoolerDelete"); $this->app->ActionHandler("spoolerdownload","DruckerSpoolerDownload"); $this->app->ActionHandler("spoolerdownloadall","DruckerSpoolerDownloadAll"); $this->app->ActionHandler("spoolerdownloadzip","DruckerSpoolerDownloadZip"); $this->app->ActionHandler("spooler","DruckerSpooler"); $this->app->ActionHandler("list","DruckerList"); $this->app->ActionHandler("testseite","DruckerTestseite"); $this->app->ActionHandler("spoolerleeren", "DruckerSpoolerLeeren"); $this->app->ActionHandlerListen($app); } public function DruckerSpoolerDownloadAll() { $id = $this->app->Secure->GetGET('id'); $data = $this->app->DB->SelectArr( "SELECT * FROM drucker_spooler WHERE drucker='$id' AND DATE_FORMAT(zeitstempel,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d')" ); $cdata = !empty($data)?count($data):0; for($i=0;$i<$cdata;$i++) { $temp = tempnam($this->app->erp->GetTMP(),''); file_put_contents($temp,base64_decode($data[$i]['content'])); $files[] = $temp; } $raw_data = $this->app->erp->MergePDF($files); $cfiles = !empty($files)?count($files):0; for($i=0;$i<$cfiles;$i++) { unlink($files[$i]); } $filename = urlencode('DOWNLOAD_SPOOLER.pdf'); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header("Content-Type: application/force-download"); header('Content-Disposition: attachment; filename=' . $filename); // header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . strlen($raw_data)); echo $raw_data; $this->app->ExitXentral(); } public function DruckerTestseite() { $id = $this->app->Secure->GetGET('id'); $cmd = $this->app->Secure->GetGET('cmd'); $format = $this->app->DB->Select(sprintf('SELECT format FROM drucker WHERE id=%d', $id)); switch($format) { case 'DINA4': $format='A4'; break; case 'DINA5': $format='A5'; break; case 'DINA6': $format='A6'; break; default: $format = 'A4'; } $Brief = new SuperFPDF('P','mm',$format); $filename=$this->app->erp->GetTMP().'Testseite_'.$id.'.pdf'; $Brief->AddPage(); $Brief->SetTextColor(0); $Brief->SetFont(($this->app->erp->Firmendaten('schriftart')?$this->app->erp->Firmendaten('schriftart'):'Arial'),'B',20); $Brief->Text(10,10,'XENTRAL TESTSEITE'); $Brief->SetTextColor(0); $Brief->Output($filename,'F'); $this->app->printer->Drucken($id,$filename); unlink($filename); $msg = $this->app->erp->base64_url_encode("
Druckauftrag für Testseite versendet!
"); if($cmd==='intern') { $this->app->Location->execute("index.php?module=drucker&action=edit&id=$id&msg=$msg"); } else { $this->app->Location->execute("index.php?module=drucker&action=list&msg=$msg"); } } /** * @param string $modul * @param int $id * * @return null|TransferBase */ public function loadPrinterModul($modul, $id) { $selAnbindung = [ 'cups' => 'Kommandozeilenbefehl', 'pdf' => 'PDF in Verzeichnis', 'adapterbox' => 'Adapterbox', 'email' => 'E-Mail', 'download' => 'Download', 'spooler' => 'Xentral Druckerspooler', ]; if(empty($modul) || !empty($selAnbindung[$modul])) { return null; } $id = (int)$id; if(empty($modul) || strpos($modul,'..') !== false || (!@is_file(dirname(__DIR__).'/lib/Printer/'.$modul.'.php') && !@is_file(dirname(__DIR__).'/lib/Printer/'.$modul.'/'.$modul.'.php')) ) { return null; } $class_name = $modul; $class_name_custom = $modul.'Custom'; if(!class_exists($class_name)) { if(@is_file(dirname(__DIR__).'/lib/Printer/'.$modul.'_custom.php')) { include_once dirname(__DIR__).'/lib/Printer/'.$modul.'_custom.php'; } elseif(@is_file(dirname(__DIR__).'/lib/Printer/'.$modul.'/'.$modul.'_custom.php')) { include_once dirname(__DIR__).'/lib/Printer/'.$modul.'/'.$modul.'_custom.php'; } elseif(is_file(dirname(__DIR__).'/lib/Printer/'.$modul.'/'.$modul.'.php')) { include_once dirname(__DIR__).'/lib/Printer/'.$modul.'/'.$modul.'.php'; } elseif(is_file(dirname(__DIR__).'/lib/Printer/'.$modul.'.php')) { include_once dirname(__DIR__).'/lib/Printer/'.$modul.'.php'; } else { return null; } } if(class_exists($class_name_custom)) { $obj = new $class_name_custom($this->app, $id); if(method_exists($obj,'getPrinterModul')) { $obj->getPrinterModul($this); } return $obj; } if(class_exists($class_name)) { $obj = new $class_name($this->app, $id); if(method_exists($obj,'getPrinterModul')) { $obj->getPrinterModul($this); } return $obj; } return null; } /** * @param string $value * @param bool $retarr * * @return string|null */ public function PrinterSelModul($value = '', $retarr = false) { $array = null; $ret = ''; $pfad = dirname(__DIR__).'/lib/Printer'; if(is_dir($pfad)) { $handle = opendir($pfad); if($handle) { while (false !== ($file = readdir($handle))) { $files[] = $file; } natcasesort($files); foreach($files as $file) { if($file[0] === '.' || substr($file,-8) === '.src.php' || substr($file,-11) === '_custom.php') { continue; } if((substr($file,-4) === '.php' && is_file($pfad.'/'.$file)) || (is_dir($pfad.'/'.$file) && is_file($pfad.'/'.$file.'/'.$file.'.php')) ) { $modul = str_replace('.php','',$file); $array[$modul] = substr($modul,8); if(!class_exists($modul)) { include_once $pfad.'/'.$file.'/'.$file.'.php'; } if(class_exists($modul) && method_exists($modul,'getName')) { $array[$modul] = $modul::getName(); } $ret .= ''; } } closedir($handle); } } if($retarr){ return $array; } return $ret; } public function DruckerSpoolerDownloadZip() { $id = $this->app->Secure->GetGET('id'); $data = $this->app->DB->SelectArr( "SELECT * FROM drucker_spooler WHERE drucker='$id' AND DATE_FORMAT(zeitstempel,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d')" ); $dateinamezip = 'DOWNLOAD_SPOOLER_'.date('Y-m-d').'.zip'; $zip = new ZipArchive; $zip->open($dateinamezip, ZipArchive::CREATE); $cdata = !empty($data)?count($data):0; for($i=0;$i<$cdata;$i++) { $zip->addFromString($data[$i]['zeitstempel'].' '.$data[$i]['filename'], base64_decode($data[$i]['content'])); } $zip->close(); // download header('Content-Type: application/zip'); header("Content-Disposition: attachment; filename=$dateinamezip"); header('Content-Length: ' . filesize($dateinamezip)); readfile($dateinamezip); unlink($dateinamezip); $this->app->ExitXentral(); } public function DruckerSpoolerDelete() { $id = $this->app->Secure->GetGET('id'); if($id > 0){ $drucker = $this->app->DB->Select(sprintf('SELECT drucker FROM drucker_spooler WHERE id=%d', $id)); $this->app->DB->Delete(sprintf('DELETE FROM drucker_spooler WHERE id=%d', $id)); } $msg = $this->app->erp->base64_url_encode("
Der Eintrag wurde aus dem Spooler entfernt!
"); $this->app->Location->execute("index.php?module=drucker&action=spooler&id=$drucker&msg=$msg"); } public function DruckerSpoolerDownload() { $id = $this->app->Secure->GetGET('id'); $data = $this->app->DB->SelectRow( sprintf( 'SELECT * FROM drucker_spooler WHERE id=%d', $id ) ); $raw_data = empty($data)?'': base64_decode($data['content']); if(empty($data)) { $filename = ''; } elseif($data['filename']!=''){ $filename = urlencode($data['zeitstempel'] . $data['filename']); } else{ $filename = urlencode($data['zeitstempel']); } $this->app->DB->Update( sprintf( 'UPDATE drucker_spooler SET gedruckt=1 WHERE id=%d', $id ) ); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header("Content-Type: application/force-download"); header('Content-Disposition: attachment; filename=' . $filename); // header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . strlen($raw_data)); echo $raw_data; $this->app->ExitXentral(); } public function DruckerCreate() { $this->DruckerMenu(); parent::DruckerCreate(); } public function DruckerList() { $this->DruckerMenu(); $this->app->YUI->TableSearch('TAB1','druckerlist', 'show','','',basename(__FILE__), __CLASS__); $this->app->Tpl->Parse('PAGE','tabview.tpl'); } public function DruckerDelete() { $id = $this->app->Secure->GetGET('id'); if(is_numeric($id) && $id > 0) { $this->app->DB->Delete( sprintf( 'DELETE FROM drucker WHERE id=%d', $id ) ); } $this->app->Location->execute('index.php?module=drucker&action=list'); } public function DruckerSpooler() { $this->DruckerMenu(); $id = $this->app->Secure->GetGET('id'); $this->app->Tpl->Set( 'TAB1', "
Hinweis: Die Druckeraufträge werden automatisch nach 10 Tagen gelöscht.
" ); $this->app->YUI->TableSearch('TAB1','drucker_spooler', 'show','','',basename(__FILE__), __CLASS__); $this->app->Tpl->Add('TAB1',"
   
"); $this->app->Tpl->Parse('PAGE','tabview.tpl'); } public function DruckerMenu() { $id = $this->app->Secure->GetGET('id'); $name = $id <=0?'':(String)$this->app->DB->Select( sprintf( "SELECT CONCAT(name,' ',bezeichnung) FROM drucker WHERE id=%d LIMIT 1", $id ) ); $this->app->Tpl->Set('KURZUEBERSCHRIFT2',$name); $action = $this->app->Secure->GetGET('action'); if($action==='edit' || $action==='spooler') { $this->app->erp->MenuEintrag("index.php?module=drucker&action=edit&id=$id",'Details'); $this->app->erp->MenuEintrag("index.php?module=drucker&action=spooler&id=$id",'Spooler'); } if($action==='create'){ $this->app->erp->MenuEintrag('index.php?module=drucker&action=create', 'Details'); } if($action==='list'){ $this->app->erp->MenuEintrag('index.php?module=drucker&action=list', 'Übersicht'); } $this->app->erp->MenuEintrag('index.php?module=drucker&action=create','Neu'); if($action==='list'){ $this->app->erp->MenuEintrag('index.php?module=einstellungen&action=list', 'Zurück zur Übersicht'); } else{ $this->app->erp->MenuEintrag('index.php?module=drucker&action=list', 'Zurück zur Übersicht'); } } public function DruckerEdit() { $this->DruckerMenu(); $id = $this->app->Secure->GetGET('id'); $this->app->Tpl->Set( 'TESTSEITE', "" ); parent::DruckerEdit(); } public function DruckerSpoolerLeeren() { $druckerid = $this->app->Secure->GetGET('id'); $druckerid = $druckerid <= 0?0:(int)$this->app->DB->Select( sprintf( "SELECT id FROM drucker WHERE id = %d LIMIT 1", $druckerid ) ); if($druckerid <= 0) { $this->app->Location->execute('index.php?module=drucker&action=list'); } $this->app->DB->Delete( sprintf( 'DELETE FROM drucker_spooler WHERE drucker = %d', $druckerid ) ); $this->app->Location->execute('index.php?module=drucker&action=spooler&id='.$druckerid); } }