소스 검색

oving backup trigger from settings to dashboard

Medowar 1 개월 전
부모
커밋
fe828db1ae
3개의 변경된 파일96개의 추가작업 그리고 24개의 파일을 삭제
  1. 25 0
      admin/index.php
  2. 0 24
      admin/settings.php
  3. 71 0
      config.feuerwehr.php

+ 25 - 0
admin/index.php

@@ -1,6 +1,7 @@
 <?php
 require_once __DIR__ . '/../config.php';
 require_once __DIR__ . '/../includes/functions.php';
+require_once __DIR__ . '/../includes/backup.php';
 
 if (empty($_SESSION['admin_logged_in'])) {
     header('Location: login.php');
@@ -8,6 +9,24 @@ if (empty($_SESSION['admin_logged_in'])) {
 }
 
 $pageTitle = 'Admin Dashboard';
+$backupAutoMessage = '';
+$backupAutoMessageType = '';
+
+try {
+    $backup = backupCreateAutomaticIfDue();
+    if ($backup !== null) {
+        $backupAutoMessage =
+            'Automatisches Backup wurde erstellt: ' .
+            $backup['filename'] .
+            '.';
+        $backupAutoMessageType = 'success';
+    }
+} catch (Throwable $exception) {
+    $backupAutoMessage =
+        'Automatisches Backup konnte nicht erstellt werden: ' .
+        $exception->getMessage();
+    $backupAutoMessageType = 'warning';
+}
 $orders = getOrders();
 
 $backorderGroups = getBackorderGroups();
@@ -119,6 +138,12 @@ include __DIR__ . '/../includes/header.php';
     </div>
 </div>
 
+<?php if ($backupAutoMessage !== ''): ?>
+    <div class="alert alert-<?php echo escape($backupAutoMessageType); ?>">
+        <?php echo escape($backupAutoMessage); ?>
+    </div>
+<?php endif; ?>
+
 <div class="admin-stats">
     <div class="stat-card">
         <h3>Offen</h3>

+ 0 - 24
admin/settings.php

@@ -172,8 +172,6 @@ if (empty($_SESSION['admin_logged_in'])) {
 $pageTitle = "Einstellungen";
 $message = "";
 $messageType = "";
-$backupAutoMessage = "";
-$backupAutoMessageType = "";
 
 if ($_SERVER['REQUEST_METHOD'] === "POST" && isset($_POST['save_settings'])) {
     // Validate CSRF token
@@ -232,22 +230,6 @@ if ($_SERVER['REQUEST_METHOD'] === "POST" && isset($_POST['save_settings'])) {
             $messageType = "error";
         }
     }
-} elseif ($_SERVER['REQUEST_METHOD'] === "GET") {
-    try {
-        $backup = backupCreateAutomaticIfDue();
-        if ($backup !== null) {
-            $backupAutoMessage =
-                "Automatisches Backup wurde erstellt: " .
-                $backup["filename"] .
-                ".";
-            $backupAutoMessageType = "success";
-        }
-    } catch (Throwable $exception) {
-        $backupAutoMessage =
-            "Automatisches Backup konnte nicht erstellt werden: " .
-            $exception->getMessage();
-        $backupAutoMessageType = "warning";
-    }
 }
 
 $settings = getSystemSettings();
@@ -272,12 +254,6 @@ include __DIR__ . "/../includes/header.php";
     </div>
 <?php endif; ?>
 
-<?php if ($backupAutoMessage !== ""): ?>
-    <div class="alert alert-<?php echo escape($backupAutoMessageType); ?>">
-        <?php echo escape($backupAutoMessage); ?>
-    </div>
-<?php endif; ?>
-
 <div class="panel panel-lg">
     <form method="POST">
         <?php echo csrfField(); ?>

+ 71 - 0
config.feuerwehr.php

@@ -0,0 +1,71 @@
+<?php
+// Configuration for the PSA order system.
+//
+// Copy this file to config.php on the server and adjust values for your environment.
+// config.php is not tracked in Git (.gitignore).
+
+// Site settings
+define('SITE_NAME', 'Stadt Freising');
+define('SITE_SERVICE_NAME', 'Bestellservice');
+define('SITE_SERVICE_HEADER', 'Amt 32 - Öffentliche Sicherheit und Ordnung');
+define('SITE_DEPARTMENT_NAME', 'Amt 32 - Öffentliche Sicherheit und Ordnung');
+define('SITE_ADDRESS_LINE', 'Dr.-von-Daller-Straße 7, 85354 Freising');
+define('SITE_IMPRINT_URL', 'https://www.freising.de/impressum/');
+define('SITE_PRIVACY_URL', 'https://www.freising.de/datenschutz');
+define('SITE_FULL_NAME', SITE_NAME . ' - ' . SITE_SERVICE_HEADER);
+define('SITE_URL', '/shop'); // Path under web root, or '' for document root
+
+// Optional: scheme + host only (no path) for absolute links in e-mails when HTTP_HOST is wrong behind proxies.
+// define('SITE_CANONICAL_ORIGIN', 'https://www.example.org');
+
+// Optional: file-based rate limits (see includes/functions.php). Defaults apply if omitted.
+// define('ADMIN_LOGIN_RATE_LIMIT_MAX', 10);
+// define('ADMIN_LOGIN_RATE_LIMIT_WINDOW', 900);
+// define('CHECKOUT_RATE_LIMIT_MAX', 30);
+// define('CHECKOUT_RATE_LIMIT_WINDOW', 3600);
+
+define('DISCLAIMER_LINES', [
+    'Dieses System dient der internen Bestellung persönlicher Schutzausrüstung der Stadt Freising.',
+    'Die Bearbeitung erfolgt durch Amt 32 - Öffentliche Sicherheit und Ordnung.',
+]);
+
+// Admin settings
+// Runtime source of truth for admin logins is data/admins.json.
+
+// Order settings
+define('ORDER_PREFIX', 'FS');
+define('ORDER_RECIPIENT_EMAIL', 'psa@feuerwehr-freising.de');
+define('ATTACH_ORDER_PDF_TO_ADMIN_EMAIL', true);
+
+// Email settings
+define('ADMIN_EMAIL', 'geraetewarte@feuerwehr-freising.de'); // Fallback for admin profile email defaults
+define('FROM_EMAIL', 'psa@feuerwehr-freising.de');
+define('FROM_NAME', SITE_FULL_NAME);
+
+// Data file paths
+define('DATA_DIR', __DIR__ . '/data/');
+define('UPLOADS_DIR', DATA_DIR . 'uploads/');
+define('PRODUCTS_FILE', DATA_DIR . 'products.json');
+define('ORDERS_FILE', DATA_DIR . 'orders.json');
+define('MANUAL_BACKORDERS_FILE', DATA_DIR . 'manual_backorders.json');
+define('ORGANIZATIONS_FILE', DATA_DIR . 'organizations.json');
+define('SETTINGS_FILE', DATA_DIR . 'settings.json');
+define('ADMINS_FILE', DATA_DIR . 'admins.json');
+define('CATEGORIES_FILE', DATA_DIR . 'categories.json');
+define('FAQ_FILE', DATA_DIR . 'faq.json');
+define('UPLOADS_URL', SITE_URL . '/data/uploads');
+
+// Session settings
+if (session_status() === PHP_SESSION_NONE) {
+    $isHttps =
+        (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ||
+        (isset($_SERVER['SERVER_PORT']) &&
+            (int) $_SERVER['SERVER_PORT'] === 443);
+
+    ini_set('session.use_strict_mode', '1');
+    ini_set('session.cookie_httponly', '1');
+    ini_set('session.cookie_secure', $isHttps ? '1' : '0');
+    ini_set('session.cookie_samesite', 'Lax');
+
+    session_start();
+}