File: //usr/local/mailchannels/hooks/PostAddOnDomainDelAddOnDomain.php
<?php
namespace MailChannels;
class PostAddOnDomainDelAddOnDomain extends PostAccountsCreate {
public function execute($hookData) {
//'output' is an array; therefore, take the object at index 0 of 'output' to parse 'result' and 'reason'
if (!isset($hookData['data']) || !isset($hookData['data']['output']) || !isset($hookData['data']['output'][0]['result'])) {
return array(false, "missing result parameter");
} else if ($hookData['data']['output'][0]['result'] == 0) {
if (!isset($hookData['data']['output'][0]['reason'])) {
return array(false, "cpanel api function deladdondomain failed and missing reason parameter");
} else {
return array(false, "cpanel api function deladdondomain failed, reason: {$hookData['data']['output'][0]['reason']}");
}
} else {
if (!isset($hookData['data']['args']) || !isset($hookData['data']['args']['domain'])) {
return array(false, "required element in parameters is not present ([data][args][domain])");
}
$isInboundEnabled = $this->inboundEnabled();
if ($isInboundEnabled) {
$isAutoDeProvisioningEnabled = $this->inboundConfig->autoDomainDeProvisioning();
$processParkedAndAddonDomains = $this->inboundConfig->processParkedAndAddonDomains();
if ($isAutoDeProvisioningEnabled && $processParkedAndAddonDomains) {
$domain = $hookData['data']['args']['domain'];
try {
$deprovisionResult = $this->inboundSmtpService->deProvisionDomain($domain);
if ($deprovisionResult) {
return array(true, "domain $domain no longer uses MailChannels");
} else {
return array(true, "action not taken; domain $domain not found");
}
} catch (\Exception $e) {
$errorMessage = $e->getTraceAsString();
return array(false, "unexpected error deprovisioning addon domain $domain: $errorMessage");
}
}
$strIsAutoDeProvisioningEnabled = var_export($isAutoDeProvisioningEnabled, true);
$strProcessParkedAndAddonDomains = var_export($processParkedAndAddonDomains, true);
$message = "no action taken; autoDeProvisioningEnabled: $strIsAutoDeProvisioningEnabled, processParkedAndAddonDomains: $strProcessParkedAndAddonDomains";
return array(true, $message);
}
return array(true, "action not taken; inbound not enabled");
}
}
public static function category() {
return 'Cpanel';
}
public static function event() {
return 'Api2::AddonDomain::deladdondomain';
}
public static function stage() {
return 'post';
}
}