3 define('MODULE', 'metro');
4 define('TEMPLATE', 'ordersatz.tex');
5 define('FNAME_VARS', 'ordersatz_vars.tex');
6 define('FNAME_ITEMS', 'ordersatz_items.tex');
7 define('FAXNUMBER','2002-364');
11 $tmpdir = sprintf("%sarchive/%s/%s",
12 $_SESSION['sys']['basedir'],
20 function rm_tempdir($dir)
22 system(sprintf("rm -rf %s", $dir));
25 function latex_encode($text)
27 return str_replace(array("\\",'%','&'),
28 array('\\','\%','\&'),
32 function ordersatz_archive($id, $title, $filename)
36 $parts = pathinfo($filename);
38 $base = $_SESSION['sys']['basedir'] . 'archive/' . MODULE;
41 return 'Basis-Verzeichnis nicht vorhanden';
46 if (!is_dir($base.$path))
47 if (mkdir($base.$path) === false)
48 return 'Kann Verzeichnis nicht anlegen: ' . $path;
50 $path .= '/' . date('m');
51 if (!is_dir($base.$path))
52 if (mkdir($base.$path) === false)
53 return 'Kann Verzeichnis nicht anlegen: ' . $path;
56 $parts['filename'] = utf8_encode($parts['filename']);
57 $path .= '/' . $parts['filename'];
60 for ($i=0; $i < $max; $i++) {
62 if ($i > 0) $fname .= '('.$i.')';
63 if (!empty($parts['extension']))
64 $fname .= '.' . $parts['extension'];
66 if (!is_file($base.$fname)) {
67 if (copy($filename, $base.$fname) === false)
68 return 'Kann Datei nicht speichern';
70 chmod($base.$fname, 0640);
75 $sql = sprintf("INSERT INTO metro_files (ordersatz,date,title,path,sys_user,sys_edit) " .
76 "VALUES (%d,now(),%s,%s,%s,now())",
80 $db->quote($_SESSION['sys']['login']));
81 $sth = $db->query($sql);
86 function ordersatz_finish($id)
90 $sql = sprintf("DELETE FROM metro_ordersatz_pos WHERE ordersatz = %d AND anzahl IS NULL",
92 $sth = $db->query($sql);
94 $sql = sprintf("UPDATE metro_ordersatz SET done = now(), sys_edit = now(), sys_user = %s WHERE id = %d",
95 $db->quote($_SESSION['sys']['login']),
97 $sth = $db->query($sql);
100 function ordersatz_write($id, $dir, $send)
104 $fname = sprintf("%smasks/%s/%s",
105 $_SESSION['sys']['basedir'],
109 if (!file_exists($fname))
110 return "Vorlage nicht gefunden";
112 copy($fname, $dir . '/ordersatz.tex');
115 $sql = sprintf("SELECT name,koch,email,telefon,datum,uhrzeit,owner FROM metro_ordersatz WHERE id = %d",
117 $satz = query_db($sql);
119 $f = fopen(FNAME_VARS, 'w');
120 fwrite($f, sprintf('\newcommand{\koch}{%s}'."\n", latex_encode($satz[0]['koch'])));
121 fwrite($f, sprintf('\newcommand{\reise}{%s}'."\n", latex_encode($satz[0]['name'])));
122 fwrite($f, sprintf('\newcommand{\telefon}{%s}'."\n", latex_encode($satz[0]['telefon'])));
123 fwrite($f, sprintf('\newcommand{\uhrzeit}{%s}'."\n", latex_encode($satz[0]['uhrzeit'])));
125 $d = explode('-', $satz[0]['datum']);
126 fwrite($f, sprintf('\newcommand{\datum}{%d.%d.%d}'."\n", $d[2], $d[1], $d[0]));
129 $sql = sprintf("SELECT artnr,gang,metro_vpe.short AS vpname,menge,bezeichnung,hersteller,anzahl " .
130 "FROM metro_ordersatz_pos " .
131 "JOIN metro_artikel ON artikel = metro_artikel.id " .
132 "JOIN metro_abteilung ON abteilung = metro_abteilung.id " .
133 "JOIN metro_vpe ON vpe = metro_vpe.id " .
134 "WHERE ordersatz = %d AND anzahl IS NOT NULL " .
135 "ORDER BY gang,metro_abteilung.name",
138 $result = query_db($sql);
140 if (count($result) == 0)
141 return "Keine Artikel zur Bestellung ausgewählt";
143 $f = fopen(FNAME_ITEMS, 'w');
145 foreach ($result as $row) {
146 $bez = $row['bezeichnung'];
147 if (strlen($row['hersteller']))
148 $bez .= ' (' . $row['hersteller'] . ')';
150 fwrite($f, sprintf('\order{%d}{%s}{%s %s}{%s}'."\n",
152 $row['artnr'] ? (int)$row['artnr'] : '',
155 latex_encode($row['vpname'])));
160 system("latex ordersatz > ordersatz.out 2>&1 && dvips ordersatz >> ordersatz.out 2>&1 && ps2pdf ordersatz.ps", $ret);
163 return "Probleme beim Compilieren des Ordersatzes";
165 if (!file_exists('ordersatz.ps'))
166 return "Postscript-Datei nicht erstellt";
169 $ret = ordersatz_archive($id, 'Ordersatz '.$satz[0]['name'], $dir . '/ordersatz.pdf');
174 if (empty($satz[0]['email']))
175 $satz[0]['email'] = 'joey@infodrom.org';
177 $cmd = sprintf("faxspool -f %s %s %s > /dev/null 2>&1",
183 $message = sprintf("Hallo %s!\n\nDer angehängte Ordersatz wurde gerade an Metro Oldenburg verschickt.\n" .
184 "Eine Bestätigung über den Versand kommt per Mail.\n\n",
187 mail_attach($satz[0]['email'],
188 mb_encode_mimeheader(utf8_decode('Ordersatz ' . $satz[0]['name']),'latin1'),
190 'Infodrom ' . $satz[0]['koch'],
191 array($dir . '/ordersatz.pdf'),
194 ordersatz_finish($id);