123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654 |
- <?php
- require_once(dirname(__FILE__).'/GapsXmlInfoController.php');
- require_once(dirname(__FILE__).'/PowerplayController.php');
- require_once(dirname(__FILE__).'/MailController.php');
- require_once(dirname(__FILE__).'/../models/Logfile.php');
- class GapsXmlController
- {
- /** @var string */
- private $today;
- private $generateTypes;
- private $flagSeperateMail = false;
- private $flagSendMail = true;
- private $flagGenImages = true;
- /** @var string */
- private $publishImagePath;
- /** @var string */
- private $reportPath;
- /** @var PowerplayController */
- private $pprCtrl;
- private $cubePath;
- private $mailController;
- public static function Run ($argv)
- {
- $config = parse_ini_file(dirname(__FILE__) . "/../../../GAPS.ini");
- if ($argv[1] == "generate") {
- GapsXmlController::Generate($config, $argv);
- } else if ($argv[1] == "cube-pfad") {
- GapsXmlController::UpdateCubePath($config, $argv[2]);
- } else {
- GapsXmlController::Duration($config, $argv);
- }
- }
- public static function Generate ($config, $argv)
- {
- if (count($argv) < 3) {
- die("Aufruf: php Tools\\generate.php generate GAPS.xml [Benutzer,Mails] [Cubes]");
- }
-
- $gapsXmlCtrl = new GapsXmlController($config);
- $xml = $argv[2];
- if (count($argv) > 3 && ($argv[3] == "mail" || $argv[3] == "pdf")) {
- $gapsXmlCtrl->setAction($argv[3]);
- array_shift($argv);
- }
- $userFilter = (count($argv) > 3 && $argv[3] != "") ? explode(",", strtolower($argv[3])) : array("*");
- $cubeFilter = (count($argv) > 4 && $argv[4] != "") ? explode(",", strtolower($argv[4])) : array("*");
- $gapsXmlCtrl->generateAll($xml, $userFilter, $cubeFilter);
- }
- public static function Duration ($config, $argv)
- {
- if (count($argv) < 3) {
- die("Aufruf: php Tools\\generate.php [duration|summary] GAPS.xml Logdatei");
- }
- $action = $argv[1];
- $newStructure = (substr($action, -1) != "2");
- $xml = $argv[2];
- $xmlInfo = pathinfo($xml);
- $xmlBasename = $xmlInfo['basename'];
- $errorLog = (count($argv) > 3) ? $argv[3] : realpath(dirname(__FILE__) . "\\..\\..\\logs\\" . $xmlBasename . ".log");
- $gapsXmlCtrl = new GapsXmlController($config);
- $result = $gapsXmlCtrl->getStatistics($xml, $newStructure);
- switch ($action) {
- case "duration":
- case "duration2":
- $duration = $result['summary']->Categories;
- $estimate = date("H:i", strtotime("now") + $duration * 60);
- echo "Geschaetzte Dauer: {$duration} Minuten\r\n";
- echo "Geschaetztes Ende: {$estimate}\r\n";
- break;
- case "summary":
- case "summary2":
- default:
- file_put_contents($errorLog, json_encode($result));
- if (count($result['errors']) > 0) {
- echo "Fehlerhafte Dateien (". count($result['errors']) . "):\r\n";
- foreach ($result['errors'] as $e) {
- echo $e . "\r\n";
- }
- echo "\r\nDetails: " . $errorLog ."\r\n";
- }
- break;
- }
- }
- public static function Summary ($config, $argv) {
- GapsXmlController::Duration($config, $argv);
- }
- public static function UpdateCubePath ($config, $xmlFile) {
- $gapsXmlCtrl = new GapsXmlController($config);
- $gapsXmlCtrl->changeCubePath($xmlFile);
- return;
- }
- public function __construct ($config)
- {
- $this->today = strtotime("now") - 12 * 60 * 60;
- $this->generateTypes = array(".gif" => "GIFGenerate", ".pdf" => "PDFGenerate", ".xls" => "XLSGenerate"); //".jpg" => "JPGGenerate",
- $this->flagSeperateMail = (isset($config['VERSAND_SEPARAT']) && $config['VERSAND_SEPARAT'] != "N");
- $this->mailController = new MailController($config);
- }
- public function setAction ($flag) {
- $this->flagGenImages = ($flag != "mail");
- $this->flagSendMail = ($flag != "pdf");
- }
-
- public function getStatistics ($xml, $newFile = true)
- {
- $xmlInfo = pathinfo($xml);
- $xmlBasename = str_replace(".xml", "", $xmlInfo['basename']);
- $doc = simplexml_load_string(file_get_contents($xml));
- $gxiCtrl = new GapsXmlInfoController();
- $reports = $gxiCtrl->getExistingReportFiles($xmlBasename, $doc);
- date_default_timezone_set('UTC');
- $startTime = 0;
- $time = 0;
- $duration = "00:01:00";
- $result = array('errors' => array(), 'sources' => array(), 'summary' => null);
- $publishImagePath = (string)$doc->General->PublishImagePath;
- $reportPath = (string)$doc->General->ReportPath;
- foreach ($doc->Publishes->Publish as $publish) {
- /** @var SimpleXMLElement $publish */
- $attr = $publish->attributes();
- foreach ($publish->Images->Image as $image) {
- if ($newFile) {
- $dat = $publishImagePath . $xmlBasename . "\\" . (string)$image->Report . "_";
- } else {
- $dat = $publishImagePath . (string)$image->Directory . (string)$attr->Name . "\\" . (string)$image->Name;
- }
- $reportFile = $reportPath . (string)$image->Report;
- if (!file_exists($reportFile . ".ppx")) {
- $reportFile .= ".ppr";
- } else {
- $reportFile .= ".ppx";
- }
-
- if (stripos($reportFile, "_graf") && !file_exists($reportFile)) {
- continue;
- }
- foreach ($this->generateTypes as $extension => $value) {
- if ((string)$image->$value != "J")
- continue;
- $layer = ($extension == ".pdf") ? (string)$image->PDFImageLayer : (string)$image->ImageLayer;
- if ($newFile) {
- $imageFile = $dat . $layer . $extension;
- $imageFileUtf8 = utf8_decode($imageFile);
- } else {
- $imageFile = $dat . $extension;
- $imageFileUtf8 = utf8_decode($imageFile);
- }
- if (file_exists($imageFileUtf8) && filemtime($imageFileUtf8) >= $this->today) {
- if ($startTime) {
- $duration = date("H:i:s", intval(filemtime($imageFileUtf8)) - $time);
- } else {
- $startTime = intval(filemtime($imageFileUtf8));
- }
- $time = intval(filemtime($imageFileUtf8));
- } else {
- $duration = (file_exists($imageFileUtf8)) ? "alt" : "fehlt";
- $modified = (file_exists($imageFileUtf8)) ? date("d.m.Y H:i", filemtime($imageFileUtf8)) : "fehlt";
- $newError = new WorkflowError();
- $newError->Filename = $imageFile;
- $newError->User = substr((string)$image->Directory, 0, -1);
- $newError->Report = (string)$image->Report;
- $newError->ReportModified = (file_exists($reportFile)) ? date("d.m.Y H:i", filemtime($reportFile)) : "fehlt";
- $newError->Cube = (isset($reports[$newError->Report])) ? $reports[$newError->Report] : "";
- $newError->Layer = $layer;
- $newError->MailTo = (string)$image->Email;
- $newError->Modified = $modified;
- $result['errors'][] = $newError;
- }
- $source = new Source($imageFile);
- $source->Report = (string)$image->Report;
- $source->Layer = $layer;
- $source->Duration = $duration;
- $result['sources'][] = $source;
- /*
- <Name>1.2 Kostenstellenbericht aktueller Monat</Name>
- <Description>Kostenstellenbericht aktueller Monat</Description>
- <Directory>Global1\</Directory>
- <Report>1_2_Kostenstellenbericht_aktueller_Monat_Graf</Report>
- <GIFGenerate>J</GIFGenerate>
- <JPGGenerate>N</JPGGenerate>
- <PDFGenerate>N</PDFGenerate>
- <XLSGenerate>N</XLSGenerate>
- <Active>N</Active>
- <SendEmail>N</SendEmail>
- <ImageType>0</ImageType>
- <ImageLayer>0</ImageLayer>
- <PDFImageType>0</PDFImageType>
- <PDFImageLayer>0</PDFImageLayer>
- <Ansicht>Client</Ansicht>
- <Email />
- <ppx>N</ppx>
- */
- }
- }
- }
- $result['summary'] = new Summary(count($result['sources']), floor(($time - $startTime) / 60) + 1);
- $result['summary']->Duration = date("H:i:s", $time - $startTime);
- date_default_timezone_set('Europe/Berlin');
- return $result;
- }
- public function generateAll ($xmlFile, $userFilter, $cubeFilter)
- {
- $doc = $this->readXmlFile($xmlFile);
- $xmlShortFileName = substr(basename($xmlFile), 0, -4);
- $this->publishImagePath = (string)$doc->General->PublishImagePath . $xmlShortFileName . "\\";
- $this->pprCtrl = new PowerplayController($this->publishImagePath);
- $this->cubePath = (string)$doc->General->CubePath;
- $this->reportPath = (string)$doc->General->ReportPath;
- $reportMapping = $this->getReportMapping($doc, $userFilter, $cubeFilter);
- if ($this->flagGenImages) {
- $this->generateImages($reportMapping['report']);
- }
- if ($this->flagSendMail) {
- $this->sendMails($reportMapping['mail'], $xmlShortFileName);
- }
- $scorecardMapping = $this->getScorecardMapping($doc);
- if (count($scorecardMapping['report']) > 0) {
- $sc = $this->generateScorecards($scorecardMapping);
- $this->saveScorecards($sc);
- }
- }
- public function changeCubePath ($xmlFile)
- {
- $doc = $this->readXmlFile($xmlFile);
- $this->cubePath = (string)$doc->General->CubePath;
- $this->reportPath = (string)$doc->General->ReportPath;
- $this->publishImagePath = (string)$doc->General->PublishImagePath;
- $this->pprCtrl = new PowerplayController($this->publishImagePath);
- $gxiCtrl = new GapsXmlInfoController();
- $reports = $gxiCtrl->getExistingReportFiles("1", $this->reportPath, false, "");
-
- $reportMapping = $this->getReportMapping($doc);
- // $reportMapping['report'][$report][$extension] = 1
- foreach($reportMapping['report'] as $report => $reportArray) {
- $ppxFile = $this->reportPath . $report . ".ppx";
- $pprFile = $this->reportPath . $report . ".ppr";
- if (file_exists($ppxFile)) {
- $this->changeCubePathInFile($ppxFile);
- } else if (file_exists($ppxFile)) {
- if ($this->pprCtrl->OpenReport($pprFile, $this->cubePath . $reports[$report] . "mdc")) {
- $this->pprCtrl->Save();
- $this->pprCtrl->CloseReport();
- }
- }
- }
- }
- private function saveScorecards ($sc)
- {
- foreach($sc['data'] as $user => $userArray) {
- $xml = simplexml_load_string('<?xml version="1.0" encoding="iso-8859-1"?><Daten />');
- foreach ($userArray as $id => $idArray) {
- $cat = $xml->addChild("Kategorie");
- /** @var SimpleXMLElement $cat */
- $cat->addAttribute("ID", $id);
- $cat->addChild("Publish");
- $cat->addChild("Scorecards");
- foreach ($idArray as $e) {
- $entry = $cat->Scorecards->addChild("Bericht");
- /** @var SimpleXMLElement $entry */
- $scorecard = $sc['report'][$e[0]][$e[1]][$e[2]];
- foreach ($scorecard as $key => $value) {
- $entry->addChild($key, $value);
- }
- }
- }
- $xml->asXML($this->publishImagePath . "..\\" . $user . "\\data.xml");
- }
- /*
- $header = array("Report","Zeile","Spalte","Datum","Wert");
- $recentFile = $this->publishImagePath . "recent.csv";
- $scFile = $this->publishImagePath . "scorecards.csv";
- $handle = fopen($recentFile, "w+");
- fwrite($handle, implode(";", $header) . "\r\n");
- foreach ($sc as $row) {
- fwrite($handle, implode(";", $row) . "\r\n");
- }
- fclose($handle);
- if (!file_exists($scFile)) {
- array_unshift($sc, $header);
- }
- $handle = fopen($scFile, "a+");
- foreach ($sc as $row) {
- fwrite($handle, implode(";", $row) . "\r\n");
- }
- fclose($handle);
- */
- }
- public function getScorecardMapping($doc)
- {
- $result = array('report' => array(), 'data' => array());
- foreach ($doc->Scorecards->Scorecard as $sc) {
- /** @var SimpleXMLElement $sc */
- $attr = $sc->attributes();
- $id = (string)$attr->ID;
- $user = substr((string)$attr->Directory, 0, -1);
- // $category = (string)$attr->Name;
- foreach ($sc->Reports->Report as $cell) {
- $report = trim((string)$cell->ReportFile);
- $row = (string)$cell->RowData;
- $col = (string)$cell->ColData;
- $format = (string)$cell->Format;
- $result['report'][$report][$row][$col] = array(
- 'Titel' => (string)$cell->Name,
- 'Beschreibung' => (string)$cell->Description,
- 'Wert' => 0,
- 'Grafik' => (string)$cell->ReportFile,
- 'URL' => "",
- 'Format' => $format,
- 'HoherZielwert' => (string)$cell->HoherZielwert,
- 'NiedrigerWert' => (string)$cell->LowValue,
- 'HoherWert' => (string)$cell->HighValue,
- 'Koordinaten' => $row . "|" . $col,
- 'Toleranz' => (string)$cell->Tolerance,
- 'Gewichtung' => (string)$cell->Weight,
- 'Akkumulation' => 0,
- 'Email' => "",
- 'InfoURL' => ""
- );
- $result['data'][$user][$id][] = array($report, $row, $col);
- /* Quelle
- <Scorecard ID="36420" Directory="Global1\" Name="_4._Service_">
- <Reports>
- <Report ID="88670">
- <Name>Ergebnis Prognose Monat Service Hannuschka</Name>
- <Description>Ergebnis Prognose Monat Service Hannuschka</Description>
- <Active>J</Active>
- <ReportFile>Prog_Monat_Soll_Ist_Service</ReportFile>
- <RowData>1</RowData>
- <ColData>18</ColData>
- <HoherZielwert>J</HoherZielwert>
- <LowValue>0.9</LowValue>
- <HighValue>1.0</HighValue>
- <Tolerance>0</Tolerance>
- <Format>Prozent</Format>
- <Weight>0</Weight>
- <MonthlyAccumulate>N</MonthlyAccumulate>
- <Email/>
- <InfoURL/>
- */
- /*
- <Daten>
- <_1._Gesamtbetrieb_ ID="36420">
- <Scorecards>
- <Bericht>
- <Titel>Prognose Ergebnis Gesamt</Titel>
- <Beschreibung></Beschreibung>
- <Wert>109,14 %</Wert>
- <Grafik>images/</Grafik>
- <URL><![CDATA[http://10.6.174.10/GAPS_BMW/Report/1_15_Monatsprognose]]></URL>
- <HoherZielwert>J</HoherZielwert>
- <NiedrigerWert>90 %</NiedrigerWert>
- <HoherWert>100 %</HoherWert>
- <Koordinaten>1|15</Koordinaten>
- <Toleranz>0</Toleranz>
- <Gewichtung>0</Gewichtung>
- <Akkumulation>N</Akkumulation>
- <Email>hotline@freicon.de</Email>
- <InfoURL>www.freicon.de</InfoURL>
- </Bericht>
- */
- }
- }
- return $result;
- }
- private function readXmlFile ($xmlFile)
- {
- if (!file_exists($xmlFile)) {
- throw new InvalidArgumentException("File '{$xmlFile}' not found");
- }
- return simplexml_load_string(file_get_contents($xmlFile));
- }
- /**
- * @param SimpleXMLElement $doc
- * @param array $userFilter
- * @param array $cubeFilter
- * @return array
- */
- public function getReportMapping ($doc, $userFilter = array("*"), $cubeFilter = array("*"))
- {
- $result = array('report' => array(), 'mail' => array());
- $infoCtrl = new GapsXmlInfoController();
- $reportCubes = array();
- if ($cubeFilter[0] != "*") {
- $reportCubes = $infoCtrl->getExistingReportFiles("", $doc, false);
- }
- $flagMailFilter = ($userFilter[0] != "*" && preg_match("/.*@.*\.\w+/", $userFilter[0]));
- foreach ($doc->Publishes->Publish as $publish) {
- /** @var SimpleXMLElement $publish */
- foreach ($publish->Images->Image as $image) {
- $user = substr((string)$image->Directory, 0, -1);
- $mailAddresses = explode(";", strtolower((string)$image->Email));
- foreach ($mailAddresses as $i => $mailAddress) {
- $mailAddresses[$i] = trim($mailAddress);
- }
- if ($flagMailFilter) {
- $mailAddresses = array_intersect($mailAddresses, $userFilter);
- if (count($mailAddresses) == 0) {
- continue;
- }
- }
- $report = trim((string)$image->Report);
- if ($cubeFilter[0] != "*" && isset($reportCubes[$report]) && !in_array($reportCubes[$report], $cubeFilter)) {
- continue;
- }
- foreach ($this->generateTypes as $extension => $generateImageType) {
- if ((string)$image->$generateImageType != "J")
- continue;
- $desc = utf8_decode((string)$image->Description);
- $layer = ($extension == ".pdf") ? (string)$image->PDFImageLayer : (string)$image->ImageLayer;
- $imageFile = utf8_decode("{$report}_{$layer}{$extension}");
- $result['report'][$report][$extension][$layer] = 1;
- if ((string)$image->SendEmail == "J") {
- foreach ($mailAddresses as $mailAddress) {
- $result['mail'][$mailAddress][$this->publishImagePath.$imageFile] = array($desc, $mailAddresses);
- }
- }
- }
- }
- }
- return $result;
- }
- private function generateImages ($reportMapping)
- {
- // $reportMapping[$report][$extension] = 1
- foreach($reportMapping as $report => $reportArray) {
- if (!$this->openReport($this->reportPath . $report)) {
- continue;
- }
- if (isset($reportArray['.jpg'])) {
- $this->pprCtrl->PublishImages();
- }
- if (isset($reportArray['.pdf'])) {
- $this->pprCtrl->SaveAsPdf("", array_keys($reportArray['.pdf']));
- }
- if (isset($reportArray['.xls'])) {
- $this->pprCtrl->SaveAsXls();
- }
- $this->pprCtrl->CloseReport();
- }
- }
- public function generateScorecards ($scorecardMapping)
- {
- $result = array();
- $now = date("Y-m-d");
- // $scorecardMapping[$report][$row][$column] = 1
- foreach($scorecardMapping['report'] as $report => $reportArray) {
- if (!$this->openReport($this->reportPath . $report)) {
- continue;
- }
- foreach ($reportArray as $row => $rowArray) {
- foreach ($rowArray as $col => $v) {
- $currentValue = $this->pprCtrl->GetCellValue($row, $col);
- $result[] = array(
- 'report' => $report,
- 'row' => $row,
- 'column' => $col,
- 'date' => $now,
- 'value' => $currentValue
- );
- $scorecardMapping['report'][$report][$row][$col]['Wert'] = $currentValue;
- }
- }
- $this->pprCtrl->CloseReport();
- }
- return $scorecardMapping;
- }
- private function openReport ($report)
- {
- $ppxFile = $report . ".ppx";
- $pprFile = $report . ".ppr";
- if (!file_exists($ppxFile)) {
- if (!file_exists($pprFile)) {
- return false;
- }
- $this->pprCtrl->OpenReport($pprFile);
- // $this->pprCtrl->SaveAsPpx();
- } else {
- $this->changeCubePathInFile($ppxFile);
- $this->pprCtrl->OpenReport($ppxFile);
- }
- return true;
- }
- public function changeCubePathInFile ($ppxFile)
- {
- $doc = simplexml_load_file($ppxFile);
- /** @var SimpleXMLElement $attr */
- $attr = $doc->PowerPlayReport->PPDSConnection->attributes();
- if ($this->cubePath != (string)$attr->Path) {
- $attr->Path = $this->cubePath;
- $doc->saveXML($ppxFile);
- }
- }
- public function getXmlFileParameters ($xmlFile)
- {
- $doc = $this->readXmlFile($xmlFile);
- $infoCtrl = new GapsXmlInfoController();
- $reportCubes = $infoCtrl->getExistingReportFiles("", $doc, false);
- $reportMapping = $this->getReportMapping($doc);
- $reports = array();
- $users = array();
- $mails = array();
- // $reportMapping[$extension][$report][$layer][$user] = ($file, $mail)
- foreach ($reportMapping as $ext => $extArray) {
- foreach($extArray as $report => $reportArray) {
- foreach ($reportArray as $layerArray) {
- foreach ($layerArray as $user => $userArray) {
- if ($ext != '.gif') {
- $reports[$report] = @$reportCubes[$report];
- }
- $users[$user] = 1;
- $m = array_flip(explode(";", $userArray['mail']));
- $mails = array_merge($mails, $m);
- }
- }
- }
- }
- return array('users' => array_keys($users), 'mails' => array_keys($mails), 'cubes' => array_unique(array_values($reports)), 'reports' => array_keys($reports));
- }
- private function sendMails ($reportMapping, $xmlFile)
- {
- $xmlFile = str_replace("_", " ", $xmlFile);
- $xmlFile = preg_replace("/gaps/i", "GAPS", $xmlFile);
-
- // $reportMapping[$mailAddress][$image] = array($desc, $mailAddresses);
- foreach ($reportMapping as $mailAddress => $image) {
- if ($mailAddress == "") continue;
- echo $mailAddress . "\r\n";
- if (!preg_match("/^[a-z0-9_.+-]+@[a-z0-9-]+\.[a-z0-9-.]+$/i", $mailAddress)) {
- echo "Keine gueltige E-Mail-Adresse!\r\n";
- continue;
- }
-
- if ($this->flagSeperateMail) {
- foreach ($image as $filename => $desc) {
- if (file_exists($filename) && abs(filemtime($filename) - strtotime("now")) < 24 * 60 * 60) {
- $sourceFile = "";
- preg_match("/(.*)_(\d+)\.\w{3}/", basename($filename), $sourceFile);
- $imageFile = $desc[0] . substr($filename, -4);
- $imageDate = date("d.m.Y H:i", filemtime($filename));
- $attachments = array(realpath($filename), $imageFile);
- $descriptions = "<tr><td>{$imageFile}</td><td>{$sourceFile[1]}</td><td>{$sourceFile[2]}</td><td>{$imageDate}</td><td>" . implode("<br/>", $desc[1]) . "</td></tr>";
- $this->mailController->sendMail($mailAddress, $desc[0], $this->getMailBody($descriptions), "", array($attachments));
- }
- }
- } else {
- $attachments = array();
- $descriptions = array();
- foreach ($image as $filename => $desc) {
- $sourceFile = "";
- preg_match("/(.*)_(\d+)\.\w{3}/", basename($filename), $sourceFile);
- $imageFile = $desc[0] . substr($filename, -4);
- $imageDate = "Heute nicht verfügbar.";
- if (file_exists($filename) && abs(filemtime($filename) - strtotime("now")) < 24 * 60 * 60) {
- $attachments[] = array(realpath($filename), $imageFile);
- $imageDate = date("d.m.Y H:i", filemtime($filename));
- }
- $descriptions[] = "<tr><td>{$imageFile}</td><td>{$sourceFile[1]}</td><td>{$sourceFile[2]}</td><td>{$imageDate}</td><td>" . implode("<br/>", $desc[1]) . "</td></tr>";
- }
- $count = count($attachments);
- $subject = ($count != 1) ? "{$xmlFile}: {$count} Dateien" : $desc[0];
- $this->mailController->sendMail($mailAddress, $subject, $this->getMailBody(implode("\r\n", $descriptions)), "", $attachments);
- }
- }
- }
-
- private function getMailBody ($content) {
- return "<!DOCTYPE html>\r\n" .
- "<html><head>\r\n" .
- '<meta content="text/html; charset=utf-8" http-equiv="Content-Type"><style>' .
- "\r\n.liste { border: 1px solid #888888; border-collapse: collapse; } \r\n" .
- ".liste td, .liste th { padding: 3px 15px; border: 1px solid #888888; } \r\n" .
- "</style></head><body>\r\n" .
- '<table class="liste"><tr><th>Datei</th><th>Bericht</th><th>Schicht</th><th>Stand</th><th>Empfänger</th></tr>' .
- $content .
- "</table></body></html>";
- }
- }
- ?>
|