Bladeren bron

edit mailinglists

andre 2 jaren geleden
bovenliggende
commit
e4e39e788a
2 gewijzigde bestanden met toevoegingen van 59 en 11 verwijderingen
  1. 16 0
      api/KerioWhmcs.php
  2. 43 11
      app/UI/Client/DistributionList/Providers/EditListDataProvider.php

+ 16 - 0
api/KerioWhmcs.php

@@ -315,6 +315,22 @@ class KerioWhmcs extends KerioConnectApi {
 		return $result['result'];
 	}
 
+	/**
+	 * Modify mailinglist
+	 *
+	 * @param	string  MailinglistID
+	 * @param	array	fields to set
+	 * @return	array	Result of delete action
+	 */
+	public function modifyMailinglist($mlId,$fields) {
+		$method = 'MailingLists.set';
+		$params['mlIds'] = array($mlId);
+		$params['pattern'] = $mlId;
+		$result = $this->sendRequest($method, $params);
+
+		return $result;
+	}
+
 	/**
 	 * Delete mailinglist
 	 *

+ 43 - 11
app/UI/Client/DistributionList/Providers/EditListDataProvider.php

@@ -203,37 +203,69 @@ class EditListDataProvider extends AddListDataProvider
      */
     public function update()
     {
-
-        /**
-         *  display name
-         */
-        $this->formData['displayName'] = htmlentities($this->formData['displayName']);
-
-        /**
-         *  reply display name
-         */
-        $this->formData['replyDisplayName'] = htmlentities($this->formData['replyDisplayName']);
-
         /**
          * custom members
          */
         $customMembers = explode(',',$this->formData['customMember']);
 
+        // prepare data
+        // find new internal members to add
         foreach($this->formData['memberList'] as $intMember) {
             if(!in_array($intMember, $this->formData['memberListActually'])) {
                 $addIntMembers[] = $intMember;
             }
         }
+        // find new external members to add
         foreach($customMembers as $extMember) {
             if(!in_array($extMember, $this->formData['memberListActually'])) {
                 $addExtMembers[] = $extMember;
             }
         }
+        // find members to remove
         foreach($this->formData['memberListActually'] as $oldMember) {
             if((!in_array($oldMember,$this->formData['memberList'])) && (!in_array($oldMember,$customMembers))){
                 $delMembers[] = $oldMember;
             }
         }
+
+        $paramsSet['name'] = $this->formData['listmail'];
+        $paramsSet['description'] = $this->formData['description'];
+        $paramsSet['languageId'] = $this->formData['lang'];
+        $paramsSet['subscription']['type'] = $this->formData['subscriptionRequest'];
+        $paramsSet['subscription']['moderatorNotification'] = $this->formData['subscriptionNotify'] === 'on' ? true : false;
+        $paramsSet['replyTo'] = $this->formData['replyEmailAddress'];
+        $paramsSet['posting']['memberPosting'] = $this->formData['memberPosting'];
+        $paramsSet['posting']['nonMemberPosting'] = $this->formData['nonMemberPosting'];
+        $paramsSet['posting']['sendErrorsToModerator'] = $this->formData['sendErrorsToModerator'] === 'on' ? true : false;
+
+        $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
+        try {
+            $api->login($this->getWhmcsParamByKey('serverhostname'), $this->getWhmcsParamByKey('serverusername'), $this->getWhmcsParamByKey('serverpassword'));
+        } catch (KerioApiException $error) {
+            logModuleCall(
+                'kerioEmail',
+                __FUNCTION__,
+                $error,
+                'Debug Error',
+                $error->getMessage()
+            );
+            return ['error' => $error->getMessage()];
+        }
+        // change settings
+        try {
+            $api->modifyMailinglist($this->formData['id'], $paramsSet);
+        } catch (KerioApiException $error) {
+            logModuleCall(
+                'kerioEmail',
+                __FUNCTION__,
+                $error,
+                'Debug Error',
+                $error->getMessage()
+            );
+            return ['error' => $error->getMessage()];
+        }
+        
+        $api->logout();
         /**
          * hosting id
          */