md5(date('c')));
mkdir($tmpdir,0777);
- error_log($tmpdir);
return $tmpdir;
}
function latex_encode($text)
{
- return str_replace(array("\\",'%'),
- array('\\','\%'),
+ return str_replace(array("\\",'%','&'),
+ array('\\','\%','\&'),
utf8_decode($text));
}
+function ordersatz_archive($id, $title, $filename)
+{
+ global $db;
+
+ $parts = pathinfo($filename);
+
+ $base = $_SESSION['sys']['basedir'] . 'archive/' . MODULE;
+
+ if (!is_dir($base))
+ return 'Basis-Verzeichnis nicht vorhanden';
+
+ $base .= '/';
+
+ $path = date('Y');
+ if (!is_dir($base.$path))
+ if (mkdir($base.$path) === false)
+ return 'Kann Verzeichnis nicht anlegen: ' . $path;
+
+ $path .= '/' . date('m');
+ if (!is_dir($base.$path))
+ if (mkdir($base.$path) === false)
+ return 'Kann Verzeichnis nicht anlegen: ' . $path;
+
+
+ $parts['filename'] = utf8_encode($parts['filename']);
+ $path .= '/' . $parts['filename'];
+
+ $max = 100;
+ for ($i=0; $i < $max; $i++) {
+ $fname = $path;
+ if ($i > 0) $fname .= '('.$i.')';
+ if (!empty($parts['extension']))
+ $fname .= '.' . $parts['extension'];
+
+ if (!is_file($base.$fname)) {
+ if (copy($filename, $base.$fname) === false)
+ return 'Kann Datei nicht speichern';
+
+ chmod($base.$fname, 0640);
+ break;
+ }
+ }
+
+ $sql = sprintf("INSERT INTO metro_files (ordersatz,date,title,path,sys_user,sys_edit) " .
+ "VALUES (%d,now(),%s,%s,%s,now())",
+ $id,
+ $db->quote($title),
+ $db->quote($fname),
+ $db->quote($_SESSION['sys']['login']));
+ $sth = $db->query($sql);
+
+ return true;
+}
+
+function ordersatz_finish($id)
+{
+ global $db;
+
+ $sql = sprintf("DELETE FROM metro_ordersatz_pos WHERE ordersatz = %d AND anzahl IS NULL",
+ $id);
+ $sth = $db->query($sql);
+
+ $sql = sprintf("UPDATE metro_ordersatz SET done = now(), sys_edit = now(), sys_user = %s WHERE id = %d",
+ $db->quote($_SESSION['sys']['login']),
+ $id);
+ $sth = $db->query($sql);
+}
+
function ordersatz_write($id, $dir, $send)
{
global $db;
copy($fname, $dir . '/ordersatz.tex');
chdir($dir);
- $sql = sprintf("SELECT name,koch,email,telefon,datum,uhrzeit FROM metro_ordersatz WHERE id = %d",
+ $sql = sprintf("SELECT name,koch,email,telefon,datum,uhrzeit,owner FROM metro_ordersatz WHERE id = %d",
$id);
$satz = query_db($sql);
"ORDER BY gang,metro_abteilung.name",
$id);
-# error_log($sql);
$result = query_db($sql);
+ if (count($result) == 0)
+ return "Keine Artikel zur Bestellung ausgewählt";
+
$f = fopen(FNAME_ITEMS, 'w');
foreach ($result as $row) {
if (strlen($row['hersteller']))
$bez .= ' (' . $row['hersteller'] . ')';
- fwrite($f, sprintf('\order{%d}{%d}{%s %s}{%s}'."\n",
+ fwrite($f, sprintf('\order{%d}{%s}{%s %s}{%s}'."\n",
$row['anzahl'],
- $row['artnr'],
+ $row['artnr'] ? (int)$row['artnr'] : '',
$row['menge'],
latex_encode($bez),
latex_encode($row['vpname'])));
return "Postscript-Datei nicht erstellt";
if ($send) {
- $cmd = sprintf("faxspool -f joey@finlandia.infodrom.org %s %s > /dev/null 2>&1",
- FAXNUMBER,
- ordersatz.ps);
- error_log($cmd);
- # system($cmd);
+ $ret = ordersatz_archive($id, 'Ordersatz '.$satz[0]['name'], $dir . '/ordersatz.pdf');
+
+ if ($ret !== true)
+ return $ret;
-# $fname = store_file($field, $info);
+ if (empty($satz[0]['email']))
+ $satz[0]['email'] = 'joey@infodrom.org';
+ $cmd = sprintf("faxspool -f %s %s %s > /dev/null 2>&1",
+ $satz[0]['email'],
+ FAXNUMBER,
+ 'ordersatz.ps');
+ system($cmd);
- $message = sprintf("Hallo %s!\n\nDer angehänge Ordersatz wurde gerade an Metro Oldenburg verschickt.\n\n",
+ $message = sprintf("Hallo %s!\n\nDer angehängte Ordersatz wurde gerade an Metro Oldenburg verschickt.\n" .
+ "Eine Bestätigung über den Versand kommt per Mail.\n\n",
$satz[0]['koch']);
mail_attach($satz[0]['email'],
- 'Ordersatz ' . $satz[0]['name'],
+ mb_encode_mimeheader(utf8_decode('Ordersatz ' . $satz[0]['name']),'latin1'),
$satz[0]['email'],
'Infodrom ' . $satz[0]['koch'],
array($dir . '/ordersatz.pdf'),
$message);
+
+ ordersatz_finish($id);
}
return true;