Import current development version
[misc/hallinta-metro] / utils.php
1 <?php
2
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');
8
9 function mk_tempdir()
10 {
11   $tmpdir = sprintf("%sarchive/%s/%s",
12                     $_SESSION['sys']['basedir'],
13                     MODULE,
14                     md5(date('c')));
15   mkdir($tmpdir,0777);
16
17   error_log($tmpdir);
18   return $tmpdir;
19 }
20
21 function rm_tempdir($dir)
22 {
23   system(sprintf("rm -rf %s", $dir));
24 }
25
26 function latex_encode($text)
27 {
28   return str_replace(array("\\",'%'),
29                      array('\\','\%'),
30                      utf8_decode($text));
31 }
32
33 function ordersatz_write($id, $dir, $send)
34 {
35   global $db;
36
37   $fname = sprintf("%smasks/%s/%s",
38                    $_SESSION['sys']['basedir'],
39                    MODULE,
40                    TEMPLATE);
41
42   if (!file_exists($fname))
43     return "Vorlage nicht gefunden";
44
45   copy($fname, $dir . '/ordersatz.tex');
46   chdir($dir);
47
48   $sql = sprintf("SELECT name,koch,email,telefon,datum,uhrzeit FROM metro_ordersatz WHERE id = %d",
49                  $id);
50   $satz = query_db($sql);
51
52   $f = fopen(FNAME_VARS, 'w');
53   fwrite($f, sprintf('\newcommand{\koch}{%s}'."\n", latex_encode($satz[0]['koch'])));
54   fwrite($f, sprintf('\newcommand{\reise}{%s}'."\n", latex_encode($satz[0]['name'])));
55   fwrite($f, sprintf('\newcommand{\telefon}{%s}'."\n", latex_encode($satz[0]['telefon'])));
56   fwrite($f, sprintf('\newcommand{\uhrzeit}{%s}'."\n", latex_encode($satz[0]['uhrzeit'])));
57
58   $d = explode('-', $satz[0]['datum']);
59   fwrite($f, sprintf('\newcommand{\datum}{%d.%d.%d}'."\n", $d[2], $d[1], $d[0]));
60   fclose($f);
61
62   $sql = sprintf("SELECT artnr,gang,metro_vpe.short AS vpname,menge,bezeichnung,hersteller,anzahl " .
63                  "FROM metro_ordersatz_pos " .
64                  "JOIN metro_artikel ON artikel = metro_artikel.id " .
65                  "JOIN metro_abteilung ON abteilung = metro_abteilung.id " .
66                  "JOIN metro_vpe ON vpe = metro_vpe.id " .
67                  "WHERE ordersatz = %d AND anzahl IS NOT NULL " .
68                  "ORDER BY gang,metro_abteilung.name",
69                  $id);
70
71 #  error_log($sql);
72   $result = query_db($sql);
73
74   $f = fopen(FNAME_ITEMS, 'w');
75
76   foreach ($result as $row) {
77     $bez = $row['bezeichnung'];
78     if (strlen($row['hersteller']))
79       $bez .= ' (' . $row['hersteller'] . ')';
80
81     fwrite($f, sprintf('\order{%d}{%d}{%s %s}{%s}'."\n",
82                        $row['anzahl'],
83                        $row['artnr'],
84                        $row['menge'],
85                        latex_encode($bez),
86                        latex_encode($row['vpname'])));
87   }
88
89   fclose($f);
90
91   system("latex ordersatz > ordersatz.out 2>&1 && dvips ordersatz >> ordersatz.out 2>&1 && ps2pdf ordersatz.ps", $ret);
92
93   if ($ret !== 0)
94     return "Probleme beim Compilieren des Ordersatzes";
95
96   if (!file_exists('ordersatz.ps'))
97     return "Postscript-Datei nicht erstellt";
98
99   if ($send) {
100     $cmd = sprintf("faxspool -f joey@finlandia.infodrom.org %s %s > /dev/null 2>&1",
101                    FAXNUMBER,
102                    ordersatz.ps);
103     error_log($cmd);
104     # system($cmd);
105
106 #       $fname = store_file($field, $info);
107
108
109     $message = sprintf("Hallo %s!\n\nDer angehänge Ordersatz wurde gerade an Metro Oldenburg verschickt.\n\n",
110                        $satz[0]['koch']);
111
112     mail_attach($satz[0]['email'],
113                 'Ordersatz ' . $satz[0]['name'],
114                 $satz[0]['email'],
115                 'Infodrom ' . $satz[0]['koch'],
116                 array($dir . '/ordersatz.pdf'),
117                 $message);
118   }
119
120   return true;
121 }
122
123 ?>