public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Commit
[Web] add "edit mailbox_from_template" function
c8fec24d
data/web/inc/functions.mailbox.inc.php | 60 ++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
Diff
diff --git a/data/web/inc/functions.mailbox.inc.php b/data/web/inc/functions.mailbox.inc.php
index b9a98043..afa952e6 100644
--- a/data/web/inc/functions.mailbox.inc.php
+++ b/data/web/inc/functions.mailbox.inc.php
@@ -3196,6 +3196,66 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
}
return true;
break;
+ case 'mailbox_from_template':
+ $stmt = $pdo->prepare("SELECT * FROM `templates`
+ WHERE `template` = :template AND type = 'mailbox'");
+ $stmt->execute(array(
+ ":template" => $_data['template']
+ ));
+ $mbox_template_data = $stmt->fetch(PDO::FETCH_ASSOC);
+ if (empty($mbox_template_data)){
+ $_SESSION['return'][] = array(
+ 'type' => 'danger',
+ 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
+ 'msg' => 'template_missing'
+ );
+ return false;
+ }
+
+ $mbox_template_data = json_decode($mbox_template_data["attributes"], true);
+ $quarantine_attributes = array('username' => $_data['username']);
+ $tls_attributes = array('username' => $_data['username']);
+ $ratelimit_attributes = array('object' => $_data['username']);
+ $acl_attributes = array('username' => $_data['username'], 'user_acl' => array());
+ $mailbox_attributes = array('username' => $_data['username']);
+ foreach ($mbox_template_data as $key => $value){
+ switch (true) {
+ case (strpos($key, 'quarantine_') === 0):
+ $quarantine_attributes[$key] = $value;
+ break;
+ case (strpos($key, 'tls_') === 0):
+ if ($value == null)
+ $value = 0;
+ $tls_attributes[$key] = $value;
+ break;
+ case (strpos($key, 'rl_') === 0):
+ $ratelimit_attributes[$key] = $value;
+ break;
+ case (strpos($key, 'acl_') === 0 && $value != 0):
+ array_push($acl_attributes['user_acl'], str_replace('acl_' , '', $key));
+ break;
+ default:
+ $mailbox_attributes[$key] = $value;
+ break;
+ }
+ }
+
+ $mailbox_attributes['quota'] = intval($mailbox_attributes['quota'] / 1048576);
+ $result = mailbox('edit', 'mailbox', $mailbox_attributes);
+ if ($result === false) return $result;
+ $result = mailbox('edit', 'tls_policy', $tls_attributes);
+ if ($result === false) return $result;
+ $result = mailbox('edit', 'quarantine_notification', $quarantine_attributes);
+ if ($result === false) return $result;
+ $result = mailbox('edit', 'quarantine_category', $quarantine_attributes);
+ if ($result === false) return $result;
+ $result = ratelimit('edit', 'mailbox', $ratelimit_attributes);
+ if ($result === false) return $result;
+ $result = acl('edit', 'user', $acl_attributes);
+ if ($result === false) return $result;
+
+ return true;
+ break;
case 'mailbox_templates':
if ($_SESSION['mailcow_cc_role'] != "admin") {
$_SESSION['return'][] = array(