Explorar o código

add mail forwarding

andre hai 1 ano
pai
achega
c0661cbb6f

+ 2 - 0
app/Libs/Zimbra/Components/Api/Soap/Models/Account.php

@@ -36,6 +36,8 @@ class Account extends AbstractModel
     const ATTR_DISPLAY_NAME     = 'displayName';
     const ATTR_DISPLAY_NAME     = 'displayName';
     const ATTR_MAIL_QUOTA       = 'zimbraMailQuota';
     const ATTR_MAIL_QUOTA       = 'zimbraMailQuota';
     const ATTR_ALIAS            = 'zimbraMailAlias';
     const ATTR_ALIAS            = 'zimbraMailAlias';
+    const ATTR_MAIL_FORWARD     = 'zimbraPrefMailForwardingAddress';
+    const ATTR_DISABLE_LOCAL    = 'zimbraPrefMailLocalDeliveryDisabled';
     const ATTR_CLASS_OF_SERVICE_ID = 'zimbraCOSId';
     const ATTR_CLASS_OF_SERVICE_ID = 'zimbraCOSId';
 
 
     protected $id;
     protected $id;

+ 2 - 0
app/UI/Client/EmailAccount/Forms/EditAccountForm.php

@@ -51,5 +51,7 @@ class EditAccountForm extends SortedFieldForm implements ClientArea
         $this->addSection(new EditGeneralSection());
         $this->addSection(new EditGeneralSection());
 
 
         $this->addSection(new EditAdditionalSection());
         $this->addSection(new EditAdditionalSection());
+
+        $this->addSection(new EditForwardSection());
     }
     }
 }
 }

+ 5 - 2
app/UI/Client/EmailAccount/Pages/Accounts.php

@@ -78,6 +78,9 @@ class Accounts extends DataTable implements ClientArea
             ->addColumn((new Column('quota'))
             ->addColumn((new Column('quota'))
                 ->setOrderable()
                 ->setOrderable()
                 ->setSearchable(true, Column::TYPE_INT))
                 ->setSearchable(true, Column::TYPE_INT))
+            ->addColumn((new Column('forward'))
+                ->setOrderable()
+                ->setSearchable(true, Column::TYPE_STRING))
             ->addColumn((new Column('status'))
             ->addColumn((new Column('status'))
                 ->setOrderable()
                 ->setOrderable()
                 ->setSearchable(true));
                 ->setSearchable(true));
@@ -188,8 +191,8 @@ class Accounts extends DataTable implements ClientArea
                 'date_created' => AccountHelper::getFormattedData($account->getDataResourceA('zimbraCreateTimestamp')),
                 'date_created' => AccountHelper::getFormattedData($account->getDataResourceA('zimbraCreateTimestamp')),
                 'last_login'   => AccountHelper::getFormattedData($account->getDataResourceA('zimbraLastLogonTimestamp'), 'd/m/Y H:i'),
                 'last_login'   => AccountHelper::getFormattedData($account->getDataResourceA('zimbraLastLogonTimestamp'), 'd/m/Y H:i'),
                 'quota'        => AccountHelper::getQuotaAsMb($account->getDataResourceA('zimbraMailQuota')),
                 'quota'        => AccountHelper::getQuotaAsMb($account->getDataResourceA('zimbraMailQuota')),
-                'status'       => $account->getDataResourceA('zimbraAccountStatus'),
-
+                'forward'      => $account->getDataResourceA('zimbraPrefMailForwardingAddress'),
+                'status'       => $account->getDataResourceA('zimbraAccountStatus')
             ];
             ];
 
 
             $data[] = $accountArray;
             $data[] = $accountArray;

+ 19 - 10
app/UI/Client/EmailAccount/Providers/EditAccountDataProvider.php

@@ -56,14 +56,6 @@ class EditAccountDataProvider extends BaseDataProvider
         {
         {
             throw new \Exception($result->getLastError());
             throw new \Exception($result->getLastError());
         }
         }
-        logModuleCall(
-            'zimbraEmail',
-            __FUNCTION__,
-            $result,
-            'Debug Account',
-            ''
-        );
-            
         $mailBoxParams              = explode('@', $result->getName());
         $mailBoxParams              = explode('@', $result->getName());
         $this->data['id']           = $result->getId();
         $this->data['id']           = $result->getId();
         $this->data['username']     = $mailBoxParams[0];
         $this->data['username']     = $mailBoxParams[0];
@@ -86,7 +78,12 @@ class EditAccountDataProvider extends BaseDataProvider
         $this->data['currentCosId'] = $result->getDataResourceA(Account::ATTR_CLASS_OF_SERVICE_ID);
         $this->data['currentCosId'] = $result->getDataResourceA(Account::ATTR_CLASS_OF_SERVICE_ID);
         $this->data['cosId']        = $result->getDataResourceA(Account::ATTR_CLASS_OF_SERVICE_ID);
         $this->data['cosId']        = $result->getDataResourceA(Account::ATTR_CLASS_OF_SERVICE_ID);
         $this->data['state']        = $result->getDataResourceA(Account::ATTR_STATE);
         $this->data['state']        = $result->getDataResourceA(Account::ATTR_STATE);
-
+        $this->data['target']       = $result->getDataResourceA(Account::ATTR_MAIL_FORWARD);
+        if (empty($this->data['target'])) {
+            $this->data['forward'] = 'off';
+        } else {
+            $this->data['forward'] = 'on';
+        }
         $lang = di('lang');
         $lang = di('lang');
         $this->availableValues['status'] = [
         $this->availableValues['status'] = [
             Zimbra::ACC_STATUS_ACTIVE        => $lang->absoluteT('zimbra','account','status','active'),
             Zimbra::ACC_STATUS_ACTIVE        => $lang->absoluteT('zimbra','account','status','active'),
@@ -118,7 +115,11 @@ class EditAccountDataProvider extends BaseDataProvider
         {
         {
             $value = in_array($field, $fieldToProtection) ? htmlentities($value) : $value;
             $value = in_array($field, $fieldToProtection) ? htmlentities($value) : $value;
         }
         }
-
+        if ($this->formData['forward'] == 'on') {
+            $this->formData['zimbraPrefMailLocalDeliveryDisabled'] = true;
+        } else {
+            $this->formData['zimbraPrefMailLocalDeliveryDisabled'] = false;
+        }
         /**
         /**
          * product manager allow to check product settings
          * product manager allow to check product settings
          */
          */
@@ -148,6 +149,14 @@ class EditAccountDataProvider extends BaseDataProvider
          */
          */
         $result = $service->run();
         $result = $service->run();
 
 
+        logModuleCall(
+            'zimbraEmail',
+            __FUNCTION__,
+            $result,
+            'Debug Update',
+            $this->formData
+        );
+            
         /**
         /**
          * return success or error response
          * return success or error response
          */
          */

+ 28 - 0
app/UI/Client/EmailAccount/Sections/EditForwardSection.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace ModulesGarden\Servers\ZimbraEmail\App\UI\Client\EmailAccount\Sections;
+
+
+use ModulesGarden\Servers\ZimbraEmail\App\Traits\FormExtendedTrait;
+use ModulesGarden\Servers\ZimbraEmail\App\UI\Admin\Custom\Sections\FreeFieldsSection;
+use ModulesGarden\Servers\ZimbraEmail\Core\UI\Widget\Forms\Fields\Text;
+use ModulesGarden\Servers\ZimbraEmail\App\Validators\EmailValidator;
+
+/**
+ * Class EditForwardSection
+ */
+class EditForwardSection extends FreeFieldsSection
+{
+    protected $id   = 'editForwardSection';
+    protected $name = 'editForwardSection';
+
+    use FormExtendedTrait;
+
+    public function initContent()
+    {
+        $field = new Text('target');
+        $field->addValidator(new EmailValidator());
+        $this->generateDoubleSection([new Checkbox('forward'), $field]);
+    }
+
+}