diff --git a/modules/servers/keyhelpmanager/keyhelpmanager.php b/modules/servers/keyhelpmanager/keyhelpmanager.php index d7d0744..81b9ac5 100644 --- a/modules/servers/keyhelpmanager/keyhelpmanager.php +++ b/modules/servers/keyhelpmanager/keyhelpmanager.php @@ -34,7 +34,10 @@ function keyhelpmanager_ConfigOptions() "template" => [ "FriendlyName" => "KeyHelp Template", "Type" => "dropdown", - "Options" => _keyhelpmanager_GetTemplates(), + "Options" => [ + "" => "-- Select Template --", + "manual" => "Manual Configuration (No Template)", + ], "Description" => "Select a KeyHelp template/plan for this product", "Loader" => "keyhelpmanager_TemplateLoader", ], @@ -702,34 +705,57 @@ function _keyhelpmanager_CalculatePercent(int $used, int $limit): float function _keyhelpmanager_GetTemplates($params = null) { try { - // Get server configuration from module settings or server params - if ($params && isset($params["serverid"])) { - $server = Capsule::table("tblservers") - ->where("id", $params["serverid"]) - ->first(); - - if (!$server) { - return ["" => "-- No Server Selected --"]; - } - - $apiParams = [ - "serverhostname" => $server->hostname, - "serveraccesshash" => decrypt($server->accesshash), - "serversecure" => $server->secure, + // Return default options if no params provided + if (!$params || !isset($params["serverid"]) || empty($params["serverid"])) { + return [ + "" => "-- Select Template --", + "manual" => "Manual Configuration (No Template)", ]; - - // Get additional config options - $configOptions = Capsule::table("tblservers") - ->where("id", $params["serverid"]) - ->first(); - - if ($configOptions && isset($configOptions->username)) { - $apiParams["serverusername"] = $configOptions->username; - } - } else { - return ["" => "-- Configure Product First --"]; } + // Get server configuration from module settings or server params + $server = Capsule::table("tblservers") + ->where("id", $params["serverid"]) + ->first(); + + if (!$server) { + return [ + "" => "-- Select Template --", + "manual" => "Manual Configuration (No Template)", + ]; + } + + // Check if required fields are present + if (empty($server->hostname) || empty($server->password)) { + return [ + "" => "-- Select Template --", + "manual" => "Manual Configuration (No Template)", + ]; + } + + // Try to decrypt password, return default options if it fails + try { + $apiKey = decrypt($server->password); + if (empty($apiKey)) { + return [ + "" => "-- Select Template --", + "manual" => "Manual Configuration (No Template)", + ]; + } + } catch (\Exception $e) { + return [ + "" => "-- Select Template --", + "manual" => "Manual Configuration (No Template)", + ]; + } + + $apiParams = [ + "serverhostname" => $server->hostname, + "serveraccesshash" => $apiKey, + "serversecure" => $server->secure ?? "on", + "serverhttpprefix" => "", + ]; + // Fetch templates/plans from KeyHelp // Note: This endpoint may not exist in all KeyHelp versions $result = _keyhelpmanager_APIRequest($apiParams, "/plans", "GET"); @@ -783,11 +809,9 @@ function _keyhelpmanager_GetTemplates($params = null) return $templates; } catch (\Exception $e) { - logActivity( - "KeyHelpManager: Get templates failed - " . $e->getMessage(), - ); + // Silently return default options on error to prevent page crashes return [ - "" => "-- No Template (Error) --", + "" => "-- Select Template --", "manual" => "Manual Configuration (No Template)", ]; }