New function to improve support files in masks
authorJoey Schulze <joey@infodrom.org>
Sun, 11 Mar 2012 16:59:22 +0000 (17:59 +0100)
committerJoey Schulze <joey@infodrom.org>
Sun, 11 Mar 2012 16:59:22 +0000 (17:59 +0100)
lib/files.php [new file with mode: 0644]

diff --git a/lib/files.php b/lib/files.php
new file mode 100644 (file)
index 0000000..4254a6d
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+
+# tmp_path
+# path_base
+# table_name
+# column_name = payload
+# function archive_file($fpath, $serno)
+
+#      $sql = sprintf("SELECT id FROM aeyo_scooter WHERE serno = %s",
+#                   $db->quote($serno));
+#      $sth = $db->query($sql);
+#      $row = $sth->fetch();
+# payload = $row[id]
+
+
+function file_archive($fpath, $path_base, $table, $payload)
+{
+  global $db;
+
+  $base = $_SESSION['sys']['basedir'] . 'archive';
+  if (!is_dir($base)) {
+    error_log('Archivpfad '.$path_base.' nicht vorhanden');
+    return false;
+  }
+  $base .= '/' . $path_base;
+  if (!is_dir($base)) {
+    error_log('Dokumentenpfad nicht vorhanden');
+    return false;
+  }
+  $base .= '/';
+
+  $path = date('Y');
+  if (!is_dir($base.$path))
+    if (mkdir($base.$path) === false) {
+      error_log('Kann Verzeichnis nicht anlegen: ' . $path);
+      return false;
+    }
+
+  $path .= '/' . date('m');
+  if (!is_dir($base.$path))
+    if (mkdir($base.$path) === false) {
+      error_log('Kann Verzeichnis nicht anlegen: ' . $path);
+      return false;
+    }
+
+  $parts = pathinfo($fpath);
+  $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 (rename($fpath, $base.$fname) === false) {
+       error_log('Kann Datei nicht speichern');
+       return false;
+      }
+      chmod($base.$fname, 0644);
+
+      $payload_columns = '';
+      $payload_values = '';
+      if ($payload && count($payload)) {
+       foreach ($payload as $column => $value) {
+         $payload_columns .= $column . ',';
+         $payload_values .= $db->quote($value) . ',';
+       }
+      }
+
+      $sql = sprintf("INSERT INTO %s (%sdate,path,sys_user,sys_edit) VALUES (%snow(),%s,%s,now())",
+                    $table,
+                    $payload_columns,
+                    $payload_values,
+                    $db->quote($fname),
+                    $db->quote($_SESSION['sys']['login']));
+      $sth = $db->query($sql);
+
+      return db_lastid($table);
+    }
+  }
+
+  error_log('Kann Datei nicht anlegen');
+  return false;
+}
+
+?>
\ No newline at end of file