Browse Source

Fixes adding aliases to alias domains

andryyy 8 years ago
parent
commit
8b463d53d6
1 changed files with 29 additions and 4 deletions
  1. 29 4
      data/web/inc/functions.inc.php

+ 29 - 4
data/web/inc/functions.inc.php

@@ -2603,7 +2603,7 @@ function mailbox_add_alias($postarray) {
 		$address      = $local_part.'@'.$domain;
 		$address      = $local_part.'@'.$domain;
 
 
     $domaindata = mailbox_get_domain_details($domain);
     $domaindata = mailbox_get_domain_details($domain);
-    if ($domaindata['aliases_left'] == 0) {
+    if (is_array($domaindata) && ['aliases_left'] == 0) {
       $_SESSION['return'] = array(
       $_SESSION['return'] = array(
         'type' => 'danger',
         'type' => 'danger',
         'msg' => sprintf($lang['danger']['max_alias_exceeded'])
         'msg' => sprintf($lang['danger']['max_alias_exceeded'])
@@ -4094,6 +4094,17 @@ function mailbox_get_alias_details($address) {
       ':address' => $address,
       ':address' => $address,
     ));
     ));
     $row = $stmt->fetch(PDO::FETCH_ASSOC);
     $row = $stmt->fetch(PDO::FETCH_ASSOC);
+    $stmt = $pdo->prepare("SELECT `target_domain` FROM `alias_domain` WHERE `alias_domain` = :domain");
+    $stmt->execute(array(
+      ':domain' => $row['domain'],
+    ));
+    $row_alias_domain = $stmt->fetch(PDO::FETCH_ASSOC);
+    if (isset($row_alias_domain['target_domain']) && !empty($row_alias_domain['target_domain'])) {
+      $aliasdata['in_primary_domain'] = $row_alias_domain['target_domain'];
+    }
+    else {
+      $aliasdata['in_primary_domain'] = "";
+    }
     $aliasdata['domain'] = $row['domain'];
     $aliasdata['domain'] = $row['domain'];
     $aliasdata['goto'] = $row['goto'];
     $aliasdata['goto'] = $row['goto'];
     $aliasdata['address'] = $row['address'];
     $aliasdata['address'] = $row['address'];
@@ -4210,6 +4221,15 @@ function mailbox_get_domain_details($domain) {
 	}
 	}
 
 
   try {
   try {
+    $stmt = $pdo->prepare("SELECT `target_domain` FROM `alias_domain` WHERE `alias_domain` =  :domain");
+    $stmt->execute(array(
+      ':domain' => $domain
+    ));
+    $row = $stmt->fetch(PDO::FETCH_ASSOC);
+    if (!empty($row)) { 
+      $domain = $row['target_domain'];
+    }
+
     $stmt = $pdo->prepare("SELECT 
     $stmt = $pdo->prepare("SELECT 
         `domain`,
         `domain`,
         `description`,
         `description`,
@@ -4225,14 +4245,18 @@ function mailbox_get_domain_details($domain) {
         CASE `active` WHEN 1 THEN '".$lang['mailbox']['yes']."' ELSE '".$lang['mailbox']['no']."' END AS `active`
         CASE `active` WHEN 1 THEN '".$lang['mailbox']['yes']."' ELSE '".$lang['mailbox']['no']."' END AS `active`
           FROM `domain` WHERE `domain`= :domain");
           FROM `domain` WHERE `domain`= :domain");
     $stmt->execute(array(
     $stmt->execute(array(
-      ':domain' => $domain,
+      ':domain' => $domain
     ));
     ));
     $row = $stmt->fetch(PDO::FETCH_ASSOC);
     $row = $stmt->fetch(PDO::FETCH_ASSOC);
     if (empty($row)) { 
     if (empty($row)) { 
       return false;
       return false;
     }
     }
 
 
-    $stmt = $pdo->prepare("SELECT COUNT(*) AS `count`, COALESCE(SUM(`quota`), 0) as `in_use` FROM `mailbox` WHERE `kind` NOT REGEXP 'location|thing|group' AND `domain` = :domain");
+    $stmt = $pdo->prepare("SELECT COUNT(*) AS `count`,
+      COALESCE(SUM(`quota`), 0) AS `in_use`
+        FROM `mailbox`
+          WHERE `kind` NOT REGEXP 'location|thing|group'
+            AND `domain` = :domain");
     $stmt->execute(array(':domain' => $row['domain']));
     $stmt->execute(array(':domain' => $row['domain']));
     $MailboxDataDomain	= $stmt->fetch(PDO::FETCH_ASSOC);
     $MailboxDataDomain	= $stmt->fetch(PDO::FETCH_ASSOC);
 
 
@@ -4257,12 +4281,13 @@ function mailbox_get_domain_details($domain) {
     $domaindata['relay_all_recipients_int'] = $row['relay_all_recipients_int'];
     $domaindata['relay_all_recipients_int'] = $row['relay_all_recipients_int'];
 
 
     $stmt = $pdo->prepare("SELECT COUNT(*) AS `alias_count` FROM `alias`
     $stmt = $pdo->prepare("SELECT COUNT(*) AS `alias_count` FROM `alias`
-      WHERE `domain`= :domain
+      WHERE (`domain`= :domain OR `domain` = (SELECT `alias_domain` FROM `alias_domain` WHERE `target_domain` = :domain2))
         AND `address` NOT IN (
         AND `address` NOT IN (
           SELECT `username` FROM `mailbox`
           SELECT `username` FROM `mailbox`
         )");
         )");
     $stmt->execute(array(
     $stmt->execute(array(
       ':domain' => $domain,
       ':domain' => $domain,
+      ':domain2' => $domain
     ));
     ));
     $AliasDataDomain = $stmt->fetch(PDO::FETCH_ASSOC);
     $AliasDataDomain = $stmt->fetch(PDO::FETCH_ASSOC);
     (isset($AliasDataDomain['alias_count'])) ? $domaindata['aliases_in_domain'] = $AliasDataDomain['alias_count'] : $domaindata['aliases_in_domain'] = "0";
     (isset($AliasDataDomain['alias_count'])) ? $domaindata['aliases_in_domain'] = $AliasDataDomain['alias_count'] : $domaindata['aliases_in_domain'] = "0";