andre пре 7 месеци
родитељ
комит
f03ab6c6f2
1 измењених фајлова са 50 додато и 38 уклоњено
  1. 50 38
      siteBuilder.php

+ 50 - 38
siteBuilder.php

@@ -28,17 +28,23 @@ if (!defined('WHMCS')) {
 function siteBuilder_MetaData() {
     return array(
         'DisplayName' => 'ThurData SiteBuilder Provisioning',
-        'APIVersion' => '1.2',
         'DefaultNonSSLPort' => '80',
         'DefaultSSLPort' => '443',
-        'RequiresServer' => true,
-        'ServiceSingleSignOnLabel' => 'Login to siteBuilder',
-        'AdminSingleSignOnLabel' => 'Login to siteBuilder Admin'
+        'RequiresServer' => true
     );
 }
-
+/**
+ * Create tables if neccessary
+ * Define siteBuilder product configuration options. 
+ *
+ * @see https://developers.whmcs.com/provisioning-modules/config-options/
+ *
+ * @return array
+ */
 function siteBuilder_ConfigOptions() {
+	// check for tables and create if neccessary
 	siteBuilderCreateTables();
+	// return ConfigOptions
     return ["BuilderURL" => [
 				"FriendlyName" => "Builder URL", # Full Builder URL (prefix//hostname:port/)
 				"Type" => "text", # Text Box
@@ -80,6 +86,7 @@ function siteBuilder_ConfigOptions() {
  */
 function siteBuilder_Testconnection($params) {
 	$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
+	// ping remota API
 	$response = $siteBuilder->ping($params['serverusername'], $params['serverpassword']);
 	if($response['response']['answer'] == 'pong') {
 		return array(
@@ -94,7 +101,7 @@ function siteBuilder_Testconnection($params) {
 }
 
 /**
- * Provision a new account of a siteBuilder server.
+ * Provision a new siteBuilder account
  *
  * Attempt to provision a new siteBuilder account. This is
  * called any time provisioning is requested inside of WHMCS. Depending upon the
@@ -113,10 +120,13 @@ function siteBuilder_CreateAccount($params) {
 	$username = strtolower(substr($params['clientsdetails']['firstname'],0,2) . substr($params['clientsdetails']['lastname'],0,3)) . $params['serviceid'];
 	$userdomain = $params['domain'];
 	// set DNS
+	/* disabled on dev, has to be already set in test env
 	$response = siteBuildersetDNS($params, $userdomain);
 	if($response != 'success') {
 		return $response;
 	}
+	*/
+	// update service
 	try {
 		Capsule::table('tblhosting')
 		->where('id', '=', $params['serviceid'])
@@ -135,7 +145,8 @@ function siteBuilder_CreateAccount($params) {
 			$e->getMessage()
 			);
 		return 'Error: could save username & password in database';
-	}	
+	}
+	// add account to database
 	try {
 		Capsule::table('sitePro_acc')
 		->insert(
@@ -156,14 +167,17 @@ function siteBuilder_CreateAccount($params) {
 		return 'Error: could save username & serviceid in database';
 	}	
 	$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
+	// create siteBuilder account
 	$response = $siteBuilder->create($params['username'], $params['domain'], $params['serverusername'], $params['serverpassword']);
 	if($response['status'] != '200') {
 		return 'Error: ' . $response['response']['error'];
 	}
+	// create siteBuilder base config for new account
 	$response = $siteBuilder->init($params['username'], $params['domain'], $params['serverusername'], $params['serverpassword']);
 	if($response['status'] != '200') {
 		return 'Error: ' . $response['response']['error'];
 	}
+	// set quota for new account
 	$response = $siteBuilder->setQuota($params['username'], $params['configoption3'], $params['serverusername'], $params['serverpassword']);
 	if($response['status'] != '200') {
 		return 'Error: ' . $response['response']['error'];
@@ -172,7 +186,7 @@ function siteBuilder_CreateAccount($params) {
 }
 
 /**
- * Removes a siteBuilder account.
+ * Removes a siteBuilder account and undeploy all related sites
  *
  * Called when a termination is requested. This can be invoked automatically for
  * overdue products if enabled, or requested manually by an admin user.
@@ -184,6 +198,7 @@ function siteBuilder_CreateAccount($params) {
  * @return string 'success' or an error message
  */
 function siteBuilder_TerminateAccount($params) {
+	// check if account is suspended
 	try {
 		$active = Capsule::table('sitePro_acc')
 		->where('account',$params['username'])
@@ -206,35 +221,27 @@ function siteBuilder_TerminateAccount($params) {
 	$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
 	if(!empty($sites)) {
 		foreach($sites as $site) {
-	/*		$response = $siteBuilder->undeploy($params['username'], $site, $params['serverusername'], $params['serverpassword']);
+			$response = $siteBuilder->undeploy($params['username'], $site, $params['serverusername'], $params['serverpassword']);
 			if($response['status'] != '200') {
 				return 'Error: ' . $response['response'];
-			} */
-
-			logModuleCall(
-				'siteBuilder',
-				__FUNCTION__,
-				$params,
-				'debug',
-				$site
-				);
-		
+			}
 		}	
-		try {
-			Capsule::table('sitePro_site')
-			->where('relid',$params['serviceid'])
-			->delete();
-		} catch (\Exception $e) {
-			logModuleCall(
-				'siteBuilder',
-				__FUNCTION__,
-				$params,
-				'Error: could remove domains from database',
-				$e->getMessage()
-				);
-			return 'Error: could remove domains from database';
-		}
 	}	
+	// cleanup database
+	try {
+		Capsule::table('sitePro_site')
+		->where('relid',$params['serviceid'])
+		->delete();
+	} catch (\Exception $e) {
+		logModuleCall(
+			'siteBuilder',
+			__FUNCTION__,
+			$params,
+			'Error: could remove site from database',
+			$e->getMessage()
+			);
+		return 'Error: could remove site from database';
+	}
 	// terminate account
 	$response = $siteBuilder->terminate($params['username'], $params['domain']);
 	if($response['status'] != '200') {
@@ -254,7 +261,6 @@ function siteBuilder_TerminateAccount($params) {
 			);
 		return 'Error: could remove account from database';
 	}	
-
 	return 'success';
 }
 
@@ -272,6 +278,7 @@ function siteBuilder_TerminateAccount($params) {
  * @return string 'success' or an error message
  */
 function siteBuilder_SuspendAccount($params) {
+	// disable default site
 	$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
 	$status = $siteBuilder->isenabled($params['username'],$params['domain']);
 	if($status['status'] != '200') {
@@ -283,6 +290,7 @@ function siteBuilder_SuspendAccount($params) {
 			return 'Error: ' . $response['response']['error'];
 		}
 	}
+	// set account to disabled in database
 	try {
 		Capsule::table('sitePro_acc')
 		->where('account',$params['username'])
@@ -302,7 +310,6 @@ function siteBuilder_SuspendAccount($params) {
 	// disable all sites but not change status in DB for unsuspend restoring
 	$sites = getSites($params['serviceid']);
 	if(!empty($sites)) {
-		$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
 		foreach($sites as $site) {
 			$response = $siteBuilder->disable($params['username'], $site, $params['serverusername'], $params['serverpassword']);
 			if($response['status'] != '200') {
@@ -314,7 +321,7 @@ function siteBuilder_SuspendAccount($params) {
 }
 
 /**
- * Set a siteBuilder account to status active.
+ * Set a siteBuilder account to status active and enable active sites
  *
  * Called when an un-suspension is requested. This is invoked
  * automatically upon payment of an overdue invoice for a product, or
@@ -327,6 +334,13 @@ function siteBuilder_SuspendAccount($params) {
  * @return string 'success' or an error message
  */
 function siteBuilder_UnsuspendAccount($params) {
+	$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
+	// enable deafult site
+	$response = $siteBuilder->enable($params['username'], $params['domain'], $params['serverusername'], $params['serverpassword']);
+	if($response['status'] != '200') {
+		return 'Error: ' . $response['response']['error'];
+	}
+	// set account to enabled in database
 	try {
 		Capsule::table('sitePro_acc')
 		->where('account',$params['username'])
@@ -346,7 +360,6 @@ function siteBuilder_UnsuspendAccount($params) {
 	// enable active sites
 	$sites = getSitesEnabled($params['serviceid']);
 	if(!empty($sites)) {
-		$siteBuilder = new ApiClient(getSiteBuilderApiURL($params), $params['serveraccesshash']);
 		foreach($sites as $site) {
 			$response = $siteBuilder->enable($params['username'], $site, $params['serverusername'], $params['serverpassword']);
 			if($response['status'] != '200') {
@@ -354,7 +367,6 @@ function siteBuilder_UnsuspendAccount($params) {
 			}
 		}	
 	}
-
 	return 'success';
 }