<?php
require_once("lib-action/action.php");


class ShowPackageDetails extends MB_Action
{
	public function __construct()
	{
		// This code left for compatiblity with old plesk instances (less than Panel 10)
		if ($_REQUEST["guid"]){
			$attribute = oneOf(":packageAttributes", array(
				"packageAttributeName" => "guid",
				"packageAttributeValue" => $_REQUEST['guid']
			));
			if ($attribute["packageID"]){
				$_REQUEST["packageID"] = $attribute["packageID"];
			}
		}

		$_REQUEST["packageID"] = $this->_getPackage()->id;

		parent::MB_Action();
		$this->params = array("packageID");
	}

	public function execute()
	{
		parent::execute();

		$packageID = ((int) $_REQUEST["packageID"]);
		if(!$packageID) {
			$this->addError(TRANS_ACTIONERROR, "No Package ID given.");
		} else {
			
			// retrieve price data and pass it to template
			$subscription = Factory()->Package($packageID);
	    	$this->smartyVars["planName"] = $subscription->package_name;
			$planPrice = $subscription->getPrice();
	    	$this->smartyVars["planPrice"] = $planPrice;
	    	$totalPrice = $planPrice['total'];
	    	$addonPrices = array();
	    	foreach (Factory()->PackageAddonList(array('package_id' => $packageID)) as $addon) {
	    		$addonPlan = Factory()->Product($addon->package_addon_product_id);
	    		$addonPrice = $addon->getPrice();
	    		$addonPrices[$addonPlan->product_name] = $addonPrice;
	    		$totalPrice += $addonPrice['total'];
	    	}
			$this->smartyVars["addonPrices"] = $addonPrices;
			$this->smartyVars["totalPrice"] = $totalPrice;
			
            if ($_REQUEST["reprovisionServerGroupID"]){

				$packageInfo = oneByID(":packages", $packageID);
				$attributes = arrayFor(":packageAttributes", array(
					"packageID" => $packageID,
					"serverGroupID" => $_REQUEST["reprovisionServerGroupID"],
				));
				$keyedAttributes = array();
				foreach ($attributes as $attr){
					$keyedAttributes[$attr["packageAttributeName"]] = $attr;
				}
				$productAttributes = arrayFor(":productAttributes", array(
					"productID" => $packageInfo["productID"],
					"serverGroupID" => $_REQUEST["reprovisionServerGroupID"],
				));

				foreach ($productAttributes as $attr){
					if (!$keyedAttributes[$attr["productAttributeName"]]){
						insertFor(":packageAttributes", array(
							"packageID" => $packageID,
							"packageAttributeName" => $attr["productAttributeName"],
							"packageAttributeValue" => $attr["productAttributeValue"],
							"serverGroupID" => $attr["serverGroupID"],
							"packageAttributeDateCreated" => time(),
						));
					} else {
						updateForKey(":packageAttributes", $keyedAttributes[$attr["productAttributeName"]]["packageAttributeID"], array(
							"packageAttributeValue" => $attr["productAttributeValue"],
						));
					}
				}

				$ProcessPanelXML = "<mbapi>
					<command>ProcessPanel</command>
					<subCommand>panelAdd</subCommand>
					<params>
						<disableEmail>1</disableEmail>
						<subCommand>panelAdd</subCommand>
						<packageID>".$packageID."</packageID>
						<serverGroupID>".(int)$_REQUEST["reprovisionServerGroupID"]."</serverGroupID>
					</params>
				</mbapi>";

				$queueID = $this->_setQueueHelper(0, "ProcessPanel", $ProcessPanelXML, $packageID, (int)$_REQUEST["reprovisionServerGroupID"]);
				$results = dispatchMBAPI(toXML(array(
					"mbapi" => array(
						"command" => "ProcessSystemQueue",
						"params" => array(
							"systemQueueID" => $queueID,
						),
					),
				)), 1);
			}

			if ((int)$_REQUEST["resendPackageInfoEmail"] && (int)$_REQUEST["configGroupID"]){
				require_once mb_path('/lib-mbapi/include/mail/emailTemplates/packageInfoEmail.php');
				$email = new PackageInfoEmail($packageID, (int)$_REQUEST["configGroupID"]); // need package ID and configGroupID
				if ($email->execute()){
					$this->smartyVars["resentPackageInfoEmail"] = "TRANS_PACKAGE_INFO_EMAIL_RESENT_SUCCESSFULLY";
				} else {
					$this->smartyVars["resentPackageInfoEmail"] = "TRANS_PACKAGE_INFO_EMAIL_RESENT_UNSUCCESSFULLY";
				}
			}

			// lets get the package, addon, and child package info here:
			$this->smartyVars["packageInfo"] = correctArray(grabFirstResultFromMBAPIArray(array(
				"mbapi" => array(
					"command" => "GetPackages",
					"params" => array(
						"packageID" => $packageID,
						"getPackageAttributeData" => 1,
						"getDomainData" => 1
					),
				),
			)));

			$cycleDiscountGroupIDs = array(
				$this->smartyVars['packageInfo']['cycleDiscountGroupID'] => 1,
			);

			$this->smartyVars["packageInfo"]["statusAPIName"] = getAPIStatusName("package", $this->smartyVars["packageInfo"]["packageStatus"]);
			$packageInfo =& $this->smartyVars["packageInfo"];
			$this->smartyVars["packageInfo"]["packageComments"] = utf8_html_entity_decode($this->smartyVars["packageInfo"]["packageComments"]);
			$this->smartyVars["packageAddonInfo"] = correctArray(grabResultsFromMBAPIArray(array(
				"mbapi" => array(
					"command" => "GetPackageAddons",
					"params" => array(
						"packageID" => $packageID,
						"getPackageAddonAttributes" => 1,
						"packageAddonActive" => 1,
					),
				),
			)));
			$this->smartyVars["totalAddonPrice"] = 0;
			$packageAddonInfo =& $this->smartyVars["packageAddonInfo"];
			foreach ($packageAddonInfo as $pa){
				$cycleDiscountGroupIDs[$pa['packageAddonCycleDiscountGroupID']] = 1;
			}
			$this->smartyVars["childPackageInfo"] = correctArray(grabResultsFromMBAPIArray(array(
				"mbapi" => array(
					"command" => "GetPackages",
					"params" => array(
						"parentPackageID" => $packageID,
						"getPackageAttributeData" => 1,
						"packageActive" => 1,
					),
				),
			)));
			$childPackageInfo =& $this->smartyVars["childPackageInfo"];
			foreach ($childPackageInfo as $cp){
				$cycleDiscountGroupIDs[$cp['cycleDiscountGroupID']] = 1;
			}

			$cycleDiscountGroups = arrayFor(":cycleDiscountGroups", array(
				"cycleDiscountGroupID" => array_keys($cycleDiscountGroupIDs),
				"cycleDiscountGroupActive" => 1,
				"cycleDiscounts" => array(
					"cycleDiscountActive" => 1,
				),
			));

			$this->smartyVars['cycleDiscounts'] = array();
			$this->smartyVars['cycleDiscountGroups'] = array();
			foreach ((array)$cycleDiscountGroups as $cdg){
				$this->smartyVars['cycleDiscountGroups'][$cdg['cycleDiscountGroupID']] = $cdg['cycleDiscountGroupName'];
				foreach ((array)$cdg['cycleDiscounts'] as $cd){
					$this->smartyVars['cycleDiscounts'][$cdg['cycleDiscountGroupID']][$cd['cycleID']] = $cd['cycleDiscountAmount'];
				}
			}

			if ($packageInfo['cycleDiscountGroupID'] && $this->smartyVars['cycleDiscounts'][$packageInfo['cycleDiscountGroupID']][$packageInfo['cycleID']]){
				if ($packageInfo['couponNumCycles']){
					$packageInfo['cycleDiscount'] = 0-$packageInfo['couponPrice'] * ($this->smartyVars['cycleDiscounts'][$packageInfo['cycleDiscountGroupID']][$packageInfo['cycleID']]/100);
				} else {
					$packageInfo['cycleDiscount'] = 0-$packageInfo['packagePrice'] * ($this->smartyVars['cycleDiscounts'][$packageInfo['cycleDiscountGroupID']][$packageInfo['cycleID']]/100);
				}
			}


			// ok we have the info here in:
			// $packageInfo
			// $packageAddonInfo
			// $childPackageInfo

			$packageInfo += (array)$this->getStopDateInfo($packageInfo);

			dbg("===========================================================");
			dbg($packageInfo);
			dbg($packageAddonInfo);
			dbg($childPackageInfo);

			$serverGroupStatuses = array();

			$attributes["package"] = $serverDetails = array();

			foreach ((array)$packageInfo["packageAttributes"] as $attribute){
				if ($attribute["packageAttributeName"]=="panel_status" && $attribute["serverGroupID"]){
					$serverGroupStatuses[$attribute["serverGroupID"]] = $attribute;
				}

				if(strpos($attribute["packageAttributeName"],"Password")) {
					$attribute["packageAttributeValue"] = getStuff($attribute["packageAttributeValue"]);
				}

				if($attribute["packageAttributeName"] == "masterAccountID") {
					$serverDetails[$attribute["configGroupID"]]["masterAccountID"] = $attribute["packageAttributeValue"];
				}
				if($attribute["packageAttributeName"] == "guid") {
					$serverDetails[$attribute["configGroupID"]]["guid"] = $attribute["packageAttributeValue"];
				}
				if($attribute["packageAttributeName"] == "ip") {
					$ip = $attribute["packageAttributeValue"];
					if(long2ip($ip) != 0) {
						$attribute["packageAttributeValue"] = long2ip($ip);
					} else {
						$attribute["packageAttributeValue"] = long2ip(ip2long($ip));
					}
					$panels[$attribute["configGroupID"]] = $attribute["configGroupID"];
				}

				require_once ("objects/PackageAttributes.php");
				$attribute["packageAttributeName"] = PackageAttributes::getAttributeNameForUI($attribute["packageAttributeName"]);
				$attributes["package"][$attribute["serverGroupID"]][$attribute["packageAttributeName"]] = $attribute;

				//Get the servers for the reassign link
				$configGroupID[$attribute["serverGroupID"]] = $attribute["configGroupID"];

				//Usage
				foreach((array)$panels as $panel) {

					$tmp = collapsePluralsAndSingulars(grabResultsFromMBAPIArray(
						array(
							"mbapi" => array(
								"command" => "GetPackageUsageLog",
								"params" => array(
									"packageID" => $packageID,
									"configGroupID" => $panel,
									"usageLogDateBilled" => -1,
									"getTotals" => 1,

								)
							)
						)
					));
					$this->smartyVars["packageUsage"][$packageID] = $tmp[0];
					unset($tmp);
				}

				//End Usage

			}


			// lets get the list of server groups and servers
			$serverGroupData = arrayFor(":serverGroups");

			$serverGroupNames = array();
			foreach ($serverGroupData as $sgd) $serverGroupNames[$sgd["serverGroupID"]] = $sgd["serverGroupName"];
			$serverRelData = arrayFor(":serverGroupRels");

			$serversToGroups = array();
			foreach ($serverRelData as $srd){
				$serversToGroups[$srd["serverID"]] = array($srd["serverGroupID"], $serverGroupNames[$srd["serverGroupID"]]);
			}
			// done getting groups keyed by serverID, now lets get servers and make a list
			$panels = $this->getPanelOptions();

			unset($panels[""]);
			$this->smartyVars["serverGroupServersList"] = array();

            foreach ($panels as $serverID=>$serverName) {
                $this->smartyVars["serverGroupServersList"][$serversToGroups[$serverID][0]."|".$serverID] = $serversToGroups[$serverID][1]." >> ".$serverName;

                // link to panel
                $controlPanel = Factory()->ControlPanel($serverID);
                if($controlPanel->canLoginToPanel()) {
                	$subscription = Factory()->Package($packageID);
					require_once ('objects/Product.php');
					switch($subscription->package_type) {
						case Product::TYPE_HOSTING :
							$customer = Factory()->Client($subscription->client_id);
							$serverDetails[$serverID]["loginUrl"] = action_url("clients", "ForwardToClientInterface", array(
								"clientID" => $customer->id,
								"clientContactID" => $customer->PrimaryContact->id,
								"subscriptionID" => $subscription->id
							));
							break;
						case Product::TYPE_RESELLER :
							$reseller = Factory()->Reseller($subscription->client_id, "client_id");
							$serverDetails[$serverID]["loginUrl"] = action_url("resellers", "ForwardToResellerInterface", array("resellerID" => $reseller->id));
							break;
					}
				}
            }

			$this->smartyVars["serverDetails"] = $serverDetails;
			$this->smartyVars["configGroupID"] = $configGroupID;
			$this->smartyVars["panels"] = $panels;

			$sgids = array_keys($attributes["package"]);
			foreach ($sgids as $id){
				if (!$serverGroupStatuses[$id])$serverGroupStatuses[$id] = array("absent"=>"1");
			}
			$this->smartyVars["serverGroupStatuses"] = $serverGroupStatuses;

			unset( $configGroup[0] );
			$this->smartyVars["numConfigGroups"] = count($configGroup);
			$this->smartyVars["configGroups"] =& $configGroup;

			$attributes["addon"] = array();
			foreach ((array)$packageAddonInfo as $x=>$addon){
				$price = $addon['couponNumCycles'] ? $addon['couponPrice'] : $addon['packageAddonPrice'];
				if ($addon['packageAddonCycleDiscountGroupID']){
					$discount = doubleval($this->smartyVars['cycleDiscounts'][$addon['packageAddonCycleDiscountGroupID']][$packageInfo['cycleID']]);
				}
				if ($discount>0){
					$packageAddonInfo[$x]['cycleDiscount'] = $discount;
					$packageAddonInfo[$x]['couponPriceDiscount'] = (-$addon['couponPrice']*($discount/100));
					$packageAddonInfo[$x]['packageAddonPriceDiscount'] = (-$addon['packageAddonPrice']*($discount/100));
					$this->smartyVars["totalAddonDiscount"] += (-$price*($discount/100));
				}
				$this->smartyVars["totalAddonPrice"] += $price;
				foreach ((array)$addon["packageAddonAttributes"] as $attribute){
					$attributes["addon"][$attribute["serverGroupID"]][$attribute["packageAttributeName"]][] = $attribute;
				}
			}

			foreach ((array)$childPackageInfo as $k=>$package){
				$price = $package['couponNumCycles'] ? $package['couponPrice'] : $package['packagePrice'];
				if ($package['cycleDiscountGroupID']){
					$discount = doubleval($this->smartyVars['cycleDiscounts'][$package['cycleDiscountGroupID']][$package['cycleID']]);
				}
				if ($discount>0){
					$childPackageInfo[$k]['cycleDiscount'] = $discount;
					$childPackageInfo[$k]['couponPriceDiscount'] = (-$package['couponPrice']*($discount/100));
					$childPackageInfo[$k]['packagePriceDiscount'] = (-$package['packagePrice']*($discount/100));
					$this->smartyVars["totalAddonDiscount"] += (-$price*($discount/100));
				}
				$this->smartyVars["totalAddonPrice"] += $price;
				$childPackageInfo[$k] += $this->getStopDateInfo($package);
				foreach ((array)$package["packageAttributes"] as $attribute){
					$attributes["addon"][$attribute["serverGroupID"]][$attribute["packageAttributeName"]][] = $attribute;
				}
			}

			$this->smartyVars["allAttributes"] = $attributes;

			$this->smartyVars["taxZoneGroups"] = grabHTMLOpsFromArray(
				grabSimpleMBAPIResults(dispatchMBAPI("<mbapi><command>GetTaxZoneGroups</command></mbapi>", 1)),
				"taxZoneGroupID",
				"taxZoneGroupName");
			$this->smartyVars["packageStatuses"] = getStatuses("package");
			$this->smartyVars["packageTypes"] = getTypes("products");
			$this->smartyVars["packageClientPermissions"] = getTypes("packagemanagement");
			$this->smartyVars["packageCancellationTypes"] = getTypes("cancellation");
			$this->smartyVars["packagePendingCancellations"] = getTypes("pendingcancellation");

			$this->smartyVars["lineItem"] = correctArray(grabFirstResultFromMBAPIArray(array(
				"mbapi" => array(
					"command" => "GetLineItems",
					"params" => array(
						"packageID" => $packageID,
						"packageAddonID" => 0,
						"sortDir" => "DESC",
						"sortColumn" => "lineItemDateCurrentRenewal",
						"numRecords" => 1,
					),
				),
			)));
			if ($this->smartyVars["lineItem"]["invoiceID"]){
				$this->smartyVars["invoiceInfo"] = correctArray(grabFirstResultFromMBAPIArray(array(
					"mbapi" => array(
						"command" => "GetInvoices",
						"params" => array(
							"invoiceID" => $this->smartyVars["lineItem"]["invoiceID"],
							"getInvoiceLineItemsData" => 1,
							"packageID" => array(
								$packageID,
							),
							"numRecords" => 1,
						),
					),
				)));
				$this->smartyVars["addonTotals"] = array();
				$lastMainLineItem = 0;
				foreach ($this->smartyVars["invoiceInfo"]["lineItems"] as $k=>$v){
					if ($v["packageAddonID"]){
					} else {
						$lastMainLineItem = $v["lineItemID"];
					}
					$this->smartyVars["addonTotals"]["total"][$lastMainLineItem] += $v["lineItemTotalAmount"];
					$this->smartyVars["addonTotals"]["setup"][$lastMainLineItem] += $v["lineItemSetupAmount"];
					$this->smartyVars["addonTotals"]["tax"][$lastMainLineItem] += $v["lineItemTaxAmount"];

					$this->smartyVars["invoiceInfo"]["lineItems"][$k]["packageComments"] = utf8_html_entity_decode($this->smartyVars["invoiceInfo"]["lineItems"][$k]["packageComments"]);
					$this->smartyVars["invoiceInfo"]["lineItems"][$k]["lineItemAmountDue"] = $v["lineItemTotalAmount"]-$v["lineItemPaymentAmount"];
				}
				$this->smartyVars["lineItems"] =& $this->smartyVars["invoiceInfo"]["lineItems"];
			}

			$shareData = correctArray(grabResultsFromMBAPIArray(array(
				"mbapi" => array(
					"command" => "GetBillingAccountShares",
					"params" => array(
						"packageID" => $packageID,
						"verifyBillingAccount" => 1,
					),
				),
			)));

			//Get Queue Items for this package
			$queueStatuses = getStatuses("queue");
			$queueItem = array();

			$packagesTemp = correctArray($results["packages"][0]["package"]);

			if ((int)$packageID){

				//$queueStatus = array(getAPIStatusID("queue", "new"),
				//					getAPIStatusID("queue", "error"),
				//					getAPIStatusID("queue", "rule"),
				//					getAPIStatusID("queue", "force"),
				//					getAPIStatusID("queue", "cancelled"),
				//					);

				$results = arrayFor(":systemQueue", array(
					"packageID" => $packageID,
					"sortColumn" => "systemQueueID",
					"sortDir" => "DESC",
				));

				if ($results){
					foreach($results as $v) {
						preg_match("/<subCommand>([^<]*)<\/subCommand>/s", utf8_html_entity_decode($v["systemQueueCommandInput"]), $matches);
						if (!$queueItems[$v["configGroupID"]]){
							$queueItem = array(
										"systemQueueID" => $v["systemQueueID"],
										"configGroupID" => $v["configGroupID"],
										"serverGroupID" => $v["serverGroupID"],
										"systemQueueStatus" => getAPIStatusName("queue", $v["systemQueueStatus"]),
										"subCommand" => str_replace("panel","",$matches[0]),
											);
							$queueItems[$v["configGroupID"]] = $queueItem;
						}
					}
					$this->smartyVars["queueItems"] = $queueItems;
				}
			}

			$this->smartyVars["paymentQueue_enableAdvancedShareEditing"] = Settings(Factory()->Client($this->smartyVars["packageInfo"]["clientID"])->vendor_id)->paymentQueue_enableAdvancedShareEditing;

			$keyedShares = array();
			$billingAccountIDs = array();
			$this->smartyVars["keyedShares"] = array();
			foreach ($shareData as $share){
				$billingAccountIDs[$share["billingAccountID"]] = 1;
				$keyedShares[$share["billingAccountShareGroup"]][] = $share;
				$this->smartyVars["keyedShares"][$share["billingAccountID"]] = $share;
			}
			$billingAccountIDs = array_keys($billingAccountIDs);
			$clientContactIDs = IDsOF("clientContacts", array("clientID" => $this->smartyVars["packageInfo"]["clientID"]));
			$billingAccounts = arrayFor("billingAccounts", array("clientContactID" => $clientContactIDs));
			$this->smartyVars["billingAccounts"] = array();
			foreach ($billingAccounts as $ba){
				if(0 == $ba["billingAccountActive"]) {
					continue;
				}
				$this->smartyVars["billingAccounts"][$ba["billingAccountID"]] = $ba;
				$this->smartyVars["billingAccounts"][$ba["billingAccountID"]]["typeName"] = getTypeName("billingAccount", $ba["billingAccountType"]);
			}


			$sharePercentages = array();
			foreach ($keyedShares as $group=>$shares){
				$sharePercentages[$group] = $this->getSharePercentages($shares);
			}
			$this->smartyVars["shares"] = $keyedShares;
			$this->smartyVars["sharePercentages"] = $sharePercentages;

			$_REQUEST["clientID"] = $packageInfo["clientID"];
			$this->mergePrimaryContactData();
			$this->smartyVars['types'] = getTypes("products");
			$this->mergeCycleData();
			$this->mergeServerGroups();
			$this->smartyVars["serverGroupList"][0] = TRANS_GENERAL_ATTRIBUTES;

			$subscription = Factory()->Package($packageID);
			if ($subscription->isSyncable() && !is_null($subscription->sync_error)) {
				$this->smartyVars["errorMessages"][] = blmsg("TRANS_SYNC_THIS_SUBSCRIPTION_ERROR_MSG", array("ERROR" => nl2br(billing_safetyhtml($subscription->sync_error))));
			}
            if (!is_null($subscription->upgrade_locking_date) && strtotime($subscription->upgrade_locking_date) > time()) {
                $this->smartyVars["warningMessages"][] = blmsg("TRANS_SUBSCRIPTION_AFTER_UPGRADE_DOWNGRADE_WARNING", array("DATE" => $subscription->upgrade_locking_date));
            }

            $this->smartyVars["packageInfo"]["canTransfer"] = $subscription->canTransfer();
			$this->smartyVars["packageInfo"]["canUpgrade"] = $subscription->canUpgrade();
			$this->smartyVars["packageInfo"]["canDowngrade"] = $subscription->canDowngrade();

			$this->addTemplate("packages/ShowPackageDetails");
		}
		$this->addErrorTemplates();
		return $this->hasExecutedSuccessfully();
	}

	private function getSharePercentages($shares)
	{
		$totalShares = 0;
		foreach ($shares as $share){
			$totalShares += $share["billingAccountShareValue"];
		}
		$totalShares = ($totalShares)?$totalShares:1;
		$sharePercentages = array();
		foreach ($shares as $share){
			$sharePercentages[$share["billingAccountShareID"]] = sprintf("%01.2f", round(($share["billingAccountShareValue"]/$totalShares)*100, 2));
		}
		return $sharePercentages;
	}

	private function getStopDateInfo($package)
	{
		if ($package["packageDateStopRenewal"]>(25*60*60)){
			$numCycles = 0;
			$nextRenewal = $package["packageDateNextRenewal"];
			while ($nextRenewal<$package["packageDateStopRenewal"]){
				$numCycles++;
				$nextRenewal = getNextBillingTimestamp($nextRenewal, $package["cycleID"]);
			}
			return array(
				"moreCycles" => $numCycles,
				"stopDate" => $nextRenewal);
		} else {
			return array(
				"moreCycles" => 0,
				"stopDate" => 0);
		}
	}

	private function _setQueueHelper($dateToRun, $command, $xml, $packageID, $serverGroupID, $parentQueueID = NULL, $configGroupID = NULL)
	{
		if ($dateToRun==0){
			$dateToRun = time();
		}

		$timeData = explode(";", date("i;G;j;n;Y", $dateToRun));
		$cmdArgs = array(
			"systemQueueCommand" => $command,
			"systemQueueCommandInput" => utf8_xml_entity_encode($xml),
			"systemQueueMinute" => $timeData[0],
			"systemQueueHour" => $timeData[1],
			"systemQueueDay" => $timeData[2],
			"systemQueueMonth" => $timeData[3],
			"systemQueueYear" => $timeData[4],
			"systemQueueIsRecurring" => 0,
			"systemQueueDateCreated" => time(),
			"systemQueueDateToRun" => $dateToRun,
			"systemQueueDateStarted" => 0,
			"systemQueueDateFinished" => 0,
			"packageID" => $packageID,
			"systemQueueStatus" => getAPIStatusID("queue", "force"),
		);

		if($parentQueueID){
			$cmdArgs["systemQueueParentID"] = $parentQueueID;
		}

		if($serverGroupID){
			$cmdArgs["serverGroupID"] = $serverGroupID;
		}

		if (notZero( $configGroupID )) {
			$cmdArgs["configGroupID"] = $configGroupID;
		}

		$queuedata = dispatchMBAPI(array(
			"mbapi" => array(
				"command" => "SetSystemQueue",
				"subCommand" => "insert",
				"params" => $cmdArgs,
			),
		), 1);
		dbg($queuedata);

		return $queuedata["mbapi"][0]["header"][0]["lastInsertID"][0];
	}
}
