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()]; } try { $domainID = $api->getDomainId($this->getWhmcsParamByKey('domain')); } catch (KerioApiException $error) { logModuleCall( 'kerioEmail', __FUNCTION__, $error, 'Debug Error', $error->getMessage() ); return ['error' => $error->getMessage()]; } $cond = array( "fieldName" => "id", "comparator" => "Eq", "value" => $this->actionElementId ); try { $list = $api->getMailingLists($fields,$domainID,[ $cond ]); } catch (KerioApiException $error) { logModuleCall( 'kerioEmail', __FUNCTION__, $error, 'Debug Error', $error->getMessage() ); return ['error' => $error->getMessage()]; } $api->logout(); logModuleCall( 'kerioEmail', __FUNCTION__, $list, 'Debug Error', $this->actionElementId ); /** * load hosting */ $hosting = Hosting::where('id', $this->getRequestValue('id'))->first(); /** * load api */ // $list = $repository->lists()->getDistributionListBydId($this->actionElementId); // $this->data['id'] = $list->getId(); // $res = explode('@', $list->getName()); // $this->data['listmail'] = $res[0]; // $this->data['domain'] = $res[1]; // $this->data['emailAliases'] = implode(',', $list->getResourceAliases()); // $this->data['owners'] = implode(',', $list->getResourceOwners()); /** * allow to check which should be removed */ // $this->availableValues['memberListActually'] = $this->data['memberListActually'] = $list->getResourceMembers(); // $this->availableValues['emailAliasesActually'] = $this->data['emailAliasesActually'] = $list->getResourceAliases(); // $this->availableValues['ownersActually'] = $this->data['ownersActually'] = $list->getResourceOwners(); // $this->data['displayName'] = $list->getDataResourceA(DistributionList::ATTR_DISPLAY_NAME); // $this->data['description'] = $list->getDataResourceA(DistributionList::ATTR_DESCRIPTION); // $this->data['subscriptionRequest'] = $list->getDataResourceA(DistributionList::ATTR_SUBSCRIPTION_REQUEST); // $this->data['unsubscriptionRequest'] = $list->getDataResourceA(DistributionList::ATTR_UNSUBSCRIPTION_REQUEST); // $this->data['replyDisplayName'] = $list->getDataResourceA(DistributionList::REPLY_TO_DISPLAY); // $this->data['replyEmailAddress'] = $list->getDataResourceA(DistributionList::REPLY_TO_ADDRESS); // $this->data['sharesNotify'] = $list->getDataResourceA(DistributionList::ATTR_NOTIFY_SHARES) === Kerio::ATTR_ENABLED ? ProductParams::SWITCHER_ENABLED : ProductParams::SWITCHER_DISABLED; // $this->data['hideGal'] = $list->getDataResourceA(DistributionList::ATTR_HIDE_IN_GAL) === Kerio::ATTR_ENABLED ? ProductParams::SWITCHER_ENABLED : ProductParams::SWITCHER_DISABLED; // $this->data['receiveMail'] = $list->getDataResourceA(DistributionList::ATTR_MAIL_STATUS) === Kerio::ENABLED ? ProductParams::SWITCHER_ENABLED : ProductParams::SWITCHER_DISABLED; // $this->data['replyEmail'] = $list->getDataResourceA(DistributionList::REPLY_TO_ENABLED) === Kerio::ATTR_ENABLED ? ProductParams::SWITCHER_ENABLED : ProductParams::SWITCHER_DISABLED; /** * is dynamic group */ // $this->data['dynamicGroup'] = (int)$list->isDynamic() === Kerio::ENABLED_AS_INT ? ProductParams::SWITCHER_ENABLED : ProductParams::SWITCHER_DISABLED; /** * available members */ // $accounts = $repository->accounts->getByDomainName($hosting->domain); /** * load lang */ $lang = di('lang'); /** * subscription requests */ // $this->availableValues['subscriptionRequest'] = [ // Kerio::STATUS_ACCEPT => $lang->absoluteT('Automatically accept'), // Kerio::STATUS_APPROVAL => $lang->absoluteT('Require list owner approval'), // Kerio::STATUS_REJECT => $lang->absoluteT('Automatically reject') // ]; /** * unsubscription requests */ // $this->availableValues['unsubscriptionRequest'] = [ // Kerio::STATUS_ACCEPT => $lang->absoluteT('Automatically accept'), // Kerio::STATUS_APPROVAL => $lang->absoluteT('Require list owner approval'), // Kerio::STATUS_REJECT => $lang->absoluteT('Automatically reject') // ]; // $members = $list->getResourceMembers(); /** * */ // foreach ($accounts as $account) // { // if(in_array($account->getName(),$members)) // { // $this->data['memberList'][] = $account->getName(); // } // $this->availableValues['memberList'][$account->getName()] = $account->getName(); // } /** * add custom members to array */ // $ownMembers = $this->data['memberList'] ? $this->data['memberList'] : []; // $this->data['customMember'] = implode(',',array_diff($members, $ownMembers)); // if($this->formData) // { // $this->loadReloadedData(); // } } /** * */ public function update() { /** * * provided aliases */ $customEmails = explode(',',$this->formData['emailAliases']); $this->formData['emailAliases'] = []; foreach($customEmails as $email) { if ($email !== '') { $this->formData['emailAliases'][] = $email; } } /** * provided owners */ $owners = explode(',',$this->formData['owners']); $this->formData['owners'] = []; foreach($owners as $email) { if ($email !== '') { $this->formData['owners'][] = $email; } } /** * 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']); foreach($customMembers as $customMember) { if($customMember !== '' && !in_array($customMember, $this->formData['memberList'])) { $this->formData['memberList'][] = $customMember; } } $members = $this->formData['memberList'] ? $this->formData['memberList'] : []; $this->formData['memberList'] = array_merge($customMembers, $members); /** * hosting id */ $hid = $this->request->get('id'); /** * get product manager */ $productManager = new ProductManager(); $productManager->loadByHostingId($hid); /** * load kerio manager by hosting id */ $service = (new KerioManager()) ->getApiByHosting($hid) ->soap ->service() ->updateDistributionList() ->setFormData($this->formData) ->setProductManager($productManager) ; /** * */ $result = $service->run(); if(!$result) { return (new HtmlDataJsonResponse())->setMessageAndTranslate($service->getError())->setStatusError(); } return (new HtmlDataJsonResponse())->setMessageAndTranslate('distributionListHasBeenUpdated')->setStatusSuccess(); } }