[Web] add "edit mailbox_from_template" function
This commit is contained in:
parent
1bf8beaa58
commit
642d6a332c
|
@ -3144,6 +3144,66 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
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':
|
case 'mailbox_templates':
|
||||||
if ($_SESSION['mailcow_cc_role'] != "admin") {
|
if ($_SESSION['mailcow_cc_role'] != "admin") {
|
||||||
$_SESSION['return'][] = array(
|
$_SESSION['return'][] = array(
|
||||||
|
|
Loading…
Reference in New Issue