WebOrbiton
v1.0.0.1

StocketBase

67 lines · 2.5 KB
  1. <?php
  2. ​
  3. declare(strict_types=1);
  4. ​
  5. if (count(get_included_files()) === 1) {
  6. http_response_code(403);
  7. exit;
  8. }
  9. ​
  10. $db = Database::site();
  11. $action = $_POST['action'] ?? '';
  12. ​
  13. if ($action === 'save_analytics_script') {
  14. $scriptId = (int) ($_POST['script_id'] ?? 0) ?: null;
  15. $name = trim((string) ($_POST['name'] ?? ''));
  16. $scriptCode = (string) ($_POST['script_code'] ?? '');
  17. $placement = in_array($_POST['placement'] ?? '', ['head', 'body_start', 'body_end'], true) ? $_POST['placement'] : 'head';
  18. $requiresConsent = isset($_POST['requires_consent']) ? 1 : 0;
  19. $isActive = isset($_POST['is_active']) ? 1 : 0;
  20. ​
  21. if ($name === '' || $scriptCode === '') {
  22. return;
  23. }
  24. ​
  25. if ($scriptId !== null) {
  26. $statement = $db->prepare(
  27. 'UPDATE analytics_scripts SET name = :name, script_code = :script_code, placement = :placement, requires_consent = :requires_consent, is_active = :is_active WHERE id = :id'
  28. );
  29. $statement->execute([
  30. 'name' => $name,
  31. 'script_code' => $scriptCode,
  32. 'placement' => $placement,
  33. 'requires_consent' => $requiresConsent,
  34. 'is_active' => $isActive,
  35. 'id' => $scriptId,
  36. ]);
  37. } else {
  38. $statement = $db->prepare(
  39. 'INSERT INTO analytics_scripts (name, script_code, placement, requires_consent, is_active) VALUES (:name, :script_code, :placement, :requires_consent, :is_active)'
  40. );
  41. $statement->execute([
  42. 'name' => $name,
  43. 'script_code' => $scriptCode,
  44. 'placement' => $placement,
  45. 'requires_consent' => $requiresConsent,
  46. 'is_active' => $isActive,
  47. ]);
  48. }
  49. }
  50. ​
  51. if ($action === 'delete_analytics_script') {
  52. $scriptId = (int) ($_POST['script_id'] ?? 0);
  53. if ($scriptId > 0) {
  54. $statement = $db->prepare('DELETE FROM analytics_scripts WHERE id = :id');
  55. $statement->execute(['id' => $scriptId]);
  56. }
  57. }
  58. ​
  59. if ($action === 'save_consent_settings') {
  60. $consentEnabled = isset($_POST['consent_manager_enabled']) ? '1' : '0';
  61. $statement = $db->prepare(
  62. 'INSERT INTO site_settings (setting_key, setting_value) VALUES (:key, :value) ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)'
  63. );
  64. $statement->execute(['key' => 'consent_manager_enabled', 'value' => $consentEnabled]);
  65. $statement->execute(['key' => 'consent_footer_icon_enabled', 'value' => isset($_POST['consent_footer_icon_enabled']) ? '1' : '0']);
  66. }
  67. ​