1
0
mirror of https://github.com/mailcow/mailcow-dockerized.git synced 2025-12-26 16:21:31 +00:00

Update domain modified timestamp on tag changes

Co-authored-by: DerLinkman <62480600+DerLinkman@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-12-12 11:26:18 +00:00
parent b01371c78e
commit 32b053f9be

View File

@@ -842,11 +842,11 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
); );
continue; continue;
} }
if (!hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $domain)) { if (!hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $domain)) {
$_SESSION['return'][] = array( $_SESSION['return'][] = array(
'type' => 'danger', 'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
'msg' => 'access_denied' 'msg' => 'access_denied'
); );
continue; continue;
} }
@@ -2753,11 +2753,11 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
':domain' => $domain ':domain' => $domain
)); ));
// save tags // save tags
foreach($tags as $index => $tag){ foreach($tags as $index => $tag){
if (empty($tag)) continue; if (empty($tag)) continue;
if ($index > $GLOBALS['TAGGING_LIMIT']) { if ($index > $GLOBALS['TAGGING_LIMIT']) {
$_SESSION['return'][] = array( $_SESSION['return'][] = array(
'type' => 'warning', 'type' => 'warning',
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
'msg' => array('tag_limit_exceeded', 'limit '.$GLOBALS['TAGGING_LIMIT']) 'msg' => array('tag_limit_exceeded', 'limit '.$GLOBALS['TAGGING_LIMIT'])
); );
@@ -2769,6 +2769,8 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
':tag_name' => $tag, ':tag_name' => $tag,
)); ));
} }
$stmt = $pdo->prepare("UPDATE `domain` SET `modified` = NOW() WHERE `domain` = :domain");
$stmt->execute(array(':domain' => $domain));
$_SESSION['return'][] = array( $_SESSION['return'][] = array(
'type' => 'success', 'type' => 'success',
@@ -2931,17 +2933,19 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
); );
break; break;
} }
$stmt = $pdo->prepare("INSERT INTO `tags_domain` (`domain`, `tag_name`) VALUES (:domain, :tag_name)"); $stmt = $pdo->prepare("INSERT INTO `tags_domain` (`domain`, `tag_name`) VALUES (:domain, :tag_name)");
$stmt->execute(array( $stmt->execute(array(
':domain' => $domain, ':domain' => $domain,
':tag_name' => $tag, ':tag_name' => $tag,
)); ));
} }
$stmt = $pdo->prepare("UPDATE `domain` SET `modified` = NOW() WHERE `domain` = :domain");
$_SESSION['return'][] = array( $stmt->execute(array(':domain' => $domain));
'type' => 'success',
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), $_SESSION['return'][] = array(
'msg' => array('domain_modified', htmlspecialchars($domain)) 'type' => 'success',
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
'msg' => array('domain_modified', htmlspecialchars($domain))
); );
} }
} }
@@ -6111,11 +6115,11 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
$tags = $_data['tags']; $tags = $_data['tags'];
if (!is_array($tags)) $tags = array(); if (!is_array($tags)) $tags = array();
$modifiedDomains = array();
$wasModified = false; $wasModified = false;
foreach ($domains as $domain) { foreach ($domains as $domain) {
if (!is_valid_domain_name($domain)) { if (!is_valid_domain_name($domain)) {
$_SESSION['return'][] = array( $_SESSION['return'][] = array(
'type' => 'danger', 'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
'msg' => 'domain_invalid' 'msg' => 'domain_invalid'
@@ -6128,27 +6132,44 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
'msg' => 'access_denied' 'msg' => 'access_denied'
); );
return false; return false;
} }
foreach($tags as $tag){ $domainModified = false;
// delete tag foreach($tags as $tag){
$wasModified = true; // delete tag
$stmt = $pdo->prepare("DELETE FROM `tags_domain` WHERE `domain` = :domain AND `tag_name` = :tag_name"); $domainModified = true;
$stmt->execute(array( $wasModified = true;
':domain' => $domain, $stmt = $pdo->prepare("DELETE FROM `tags_domain` WHERE `domain` = :domain AND `tag_name` = :tag_name");
':tag_name' => $tag, $stmt->execute(array(
)); ':domain' => $domain,
} ':tag_name' => $tag,
} ));
}
if (!$wasModified) return false; if ($domainModified) {
$_SESSION['return'][] = array( $modifiedDomains[] = $domain;
'type' => 'success', }
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), }
'msg' => array('domain_modified', $domain)
); if (!$wasModified) return false;
break; if (!empty($modifiedDomains)) {
$placeholders = array();
$params = array();
foreach ($modifiedDomains as $idx => $modifiedDomain) {
$placeholders[] = ":domain".$idx;
$params[":domain".$idx] = $modifiedDomain;
}
$stmt = $pdo->prepare("UPDATE `domain` SET `modified` = NOW() WHERE `domain` IN (".implode(',', $placeholders).")");
$stmt->execute($params);
$modifiedDomains = array_map('htmlspecialchars', $modifiedDomains);
}
$modifiedDomains = (empty($modifiedDomains)) ? array('-') : $modifiedDomains;
$_SESSION['return'][] = array(
'type' => 'success',
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
'msg' => array('domain_modified', implode(', ', $modifiedDomains))
);
break;
case 'tags_mailbox': case 'tags_mailbox':
if (!is_array($_data['username'])) { if (!is_array($_data['username'])) {
$usernames = array(); $usernames = array();