git subrepo clone https://github.com/mailcow/mailcow-dockerized.git mailcow/src/mailcow-dockerized

subrepo: subdir:   "mailcow/src/mailcow-dockerized"
  merged:   "a832becb"
upstream: origin:   "https://github.com/mailcow/mailcow-dockerized.git"
  branch:   "master"
  commit:   "a832becb"
git-subrepo: version:  "0.4.3"
  origin:   "???"
  commit:   "???"
Change-Id: If5be2d621a211e164c9b6577adaa7884449f16b5
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/functions.quota_notification.inc.php b/mailcow/src/mailcow-dockerized/data/web/inc/functions.quota_notification.inc.php
new file mode 100644
index 0000000..9ca5a22
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/functions.quota_notification.inc.php
@@ -0,0 +1,67 @@
+<?php

+function quota_notification($_action, $_data = null) {

+	global $redis;

+	$_data_log = $_data;

+  if ($_SESSION['mailcow_cc_role'] != "admin") {

+    $_SESSION['return'][] = array(

+      'type' => 'danger',

+      'log' => array(__FUNCTION__, $_action, $_data_log),

+      'msg' => 'access_denied'

+    );

+    return false;

+  }

+  switch ($_action) {

+    case 'edit':

+      $retention_size = $_data['retention_size'];

+      if ($_data['release_format'] == 'attachment' || $_data['release_format'] == 'raw') {

+        $release_format = $_data['release_format'];

+      }

+      else {

+        $release_format = 'raw';

+      }

+      $subject = $_data['subject'];

+      $sender = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $_data['sender']);

+      if (filter_var($sender, FILTER_VALIDATE_EMAIL) === false) {

+        $sender = '';

+      }

+      $html = $_data['html_tmpl'];

+      try {

+        $redis->Set('QW_SENDER', $sender);

+        $redis->Set('QW_SUBJ', $subject);

+        $redis->Set('QW_HTML', $html);

+      }

+      catch (RedisException $e) {

+        $_SESSION['return'][] = array(

+          'type' => 'danger',

+          'log' => array(__FUNCTION__, $_action, $_data_log),

+          'msg' => array('redis_error', $e)

+        );

+        return false;

+      }

+      $_SESSION['return'][] = array(

+        'type' => 'success',

+        'log' => array(__FUNCTION__, $_action, $_data_log),

+        'msg' => 'saved_settings'

+      );

+    break;

+    case 'get':

+      try {

+        $settings['subject'] = $redis->Get('QW_SUBJ');

+        $settings['sender'] = $redis->Get('QW_SENDER');

+        $settings['html_tmpl'] = htmlspecialchars($redis->Get('QW_HTML'));

+        if (empty($settings['html_tmpl'])) {

+          $settings['html_tmpl'] = htmlspecialchars(file_get_contents("/tpls/quota.tpl"));

+        }

+      }

+      catch (RedisException $e) {

+        $_SESSION['return'][] = array(

+          'type' => 'danger',

+          'log' => array(__FUNCTION__, $_action, $_data_log),

+          'msg' => array('redis_error', $e)

+        );

+        return false;

+      }

+      return $settings;

+    break;

+  }

+}