Finish ordersatz
authorJoey Schulze <joey@infodrom.org>
Sat, 14 Jan 2012 14:41:08 +0000 (15:41 +0100)
committerJoey Schulze <joey@infodrom.org>
Sat, 14 Jan 2012 14:41:08 +0000 (15:41 +0100)
ordersatz_pos.php
utils.php

index b060b8b..6b484c7 100644 (file)
@@ -48,10 +48,31 @@ function build_pdf()
   var source = document.getElementById('source');
   if (!source) return false;
 
-  var parms = 'source=' + source.innerHTML + '&callback=pdf&';
+  var parms = 'source=' + source.innerHTML + '&callback=pdf';
   ajax_request('function', parms, build_pdf_callback);
   return false;
 }
+
+function finish_callback(data)
+{
+  if (data.status == true) {
+    info('Ordersatz verschickt');
+
+    confirm("Der Ordersatz wurde verschickt.");
+    window.location.href = './?mask=metro__ordersatz';
+  }
+}
+
+function finish()
+{
+  var source = document.getElementById('source');
+  if (!source) return false;
+
+  var parms = 'source=' + source.innerHTML + '&callback=send';
+  ajax_request('function', parms, finish_callback);
+  return false;
+}
+
 EOC;
 
 $buttons = <<<EOC
@@ -164,7 +185,6 @@ function cb_cellsave()
                   $_SESSION['ordersatz'], $_POST['id']);
 
   $sth = $db->query($sql);
-  error_log($sql);
 }
 
 
@@ -201,9 +221,9 @@ function cb_send()
   if ($result !== true)
     return array('error' => $result);
 
-  $fname = $tmpdir . '/ordersatz.pdf';
-
   rm_tempdir($tmpdir);
+
+  return array('status' => true);
 }
 
 ?>
index 1829a8d..9f9261f 100644 (file)
--- a/utils.php
+++ b/utils.php
@@ -14,7 +14,6 @@ function mk_tempdir()
                    md5(date('c')));
   mkdir($tmpdir,0777);
 
-  error_log($tmpdir);
   return $tmpdir;
 }
 
@@ -30,6 +29,74 @@ function latex_encode($text)
                     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;
@@ -45,7 +112,7 @@ function ordersatz_write($id, $dir, $send)
   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);
 
@@ -68,7 +135,6 @@ function ordersatz_write($id, $dir, $send)
                 "ORDER BY gang,metro_abteilung.name",
                 $id);
 
-#  error_log($sql);
   $result = query_db($sql);
 
   $f = fopen(FNAME_ITEMS, 'w');
@@ -97,16 +163,19 @@ function ordersatz_write($id, $dir, $send)
     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');
 
-#      $fname = store_file($field, $info);
+    if ($ret !== true)
+      return $ret;
 
+    $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'],
@@ -115,6 +184,8 @@ function ordersatz_write($id, $dir, $send)
                'Infodrom ' . $satz[0]['koch'],
                array($dir . '/ordersatz.pdf'),
                $message);
+
+    ordersatz_finish($id);
   }
 
   return true;