<?php
/**
 * Best Client Desk - AI Support & Ticket Cockpit for WHMCS
 *
 * Seamlessly embeds Best Client Desk directly into WHMCS Admin with Single Sign-On,
 * live workspace intelligence, AI ticket drafting, and instant cPanel triage.
 *
 * @version 2.0.0
 * @author Best Client Desk <support@bestclientdesk.com>
 * @license Proprietary
 * @website https://bestclientdesk.com
 */

if (!defined("WHMCS")) {
    die("This file cannot be accessed directly");
}

function bestclientdesk_config() {
    return array(
        'name' => 'Best Client Desk',
        'description' => 'AI Support & Ticket Cockpit for WHMCS. High-speed ticket copilot, AI error log triage, and client workspace intelligence.',
        'version' => '2.0.0',
        'author' => 'Best Client Desk',
        'language' => 'english',
        'fields' => array(
            'cockpitUrl' => array(
                'FriendlyName' => 'Best Client Desk App URL',
                'Type' => 'text',
                'Size' => '60',
                'Default' => 'https://comms.creativeyadley.com',
                'Description' => 'The public or private URL hosting your Best Client Desk service.',
            ),
            'cockpitPin' => array(
                'FriendlyName' => 'Shared Security PIN / Secret',
                'Type' => 'password',
                'Size' => '20',
                'Default' => '198689',
                'Description' => 'Secret passcode used to sign secure Single Sign-On (SSO) tokens for staff.',
            ),
            'licenseKey' => array(
                'FriendlyName' => 'Subscription License Key',
                'Type' => 'text',
                'Size' => '45',
                'Default' => 'BCD-PRO-9841-7622-K91A',
                'Description' => 'License key for your active Best Client Desk plan (Starter, Agency Pro, or Enterprise).',
            )
        )
    );
}

function bestclientdesk_activate() {
    return array('status' => 'success', 'description' => 'Best Client Desk module activated successfully.');
}

function bestclientdesk_deactivate() {
    return array('status' => 'success', 'description' => 'Best Client Desk module deactivated.');
}

function bestclientdesk_output($vars) {
    $cockpitUrl = rtrim($vars['cockpitUrl'], '/');
    $pin = $vars['cockpitPin'];
    $licenseKey = !empty($vars['licenseKey']) ? $vars['licenseKey'] : 'BCD-PRO-9841-7622-K91A';
    
    // Generate secure Single Sign-On (SSO) handshake token
    $adminId = isset($_SESSION['adminid']) ? (int)$_SESSION['adminid'] : 1;
    $adminUser = isset($_SESSION['adminuser']) ? preg_replace('/[^a-zA-Z0-9_\-\.]/', '', $_SESSION['adminuser']) : 'Admin';
    $time = time();
    $signature = hash_hmac('sha256', "{$adminId}:{$adminUser}:{$time}", $pin);
    $ssoPayload = base64_encode("{$adminId}:{$adminUser}:{$time}:{$signature}");
    $launchUrl = "{$cockpitUrl}/?sso=" . urlencode($ssoPayload) . "&license=" . urlencode($licenseKey);
    
    echo '<div style="margin: -15px; height: calc(100vh - 120px); min-height: 850px; display: flex; flex-direction: column;">';
    echo '  <div style="background: #0f172a; padding: 12px 20px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid rgba(255,255,255,0.1);">';
    echo '    <div style="display: flex; align-items: center; gap: 10px;">';
    echo '      <span style="display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: #10b981; box-shadow: 0 0 8px #10b981;"></span>';
    echo '      <strong style="color: #ffffff; font-family: sans-serif; font-size: 14px; letter-spacing: 0.5px;">Best Client Desk &bull; AI Support & Ticket Cockpit (Live SSO)</strong>';
    echo '    </div>';
    echo '    <a href="' . htmlspecialchars($launchUrl, ENT_QUOTES, 'UTF-8') . '" target="_blank" style="color: #38bdf8; text-decoration: none; font-size: 13px; font-weight: 600; font-family: sans-serif;">Launch Fullscreen &rarr;</a>';
    echo '  </div>';
    echo '  <iframe src="' . htmlspecialchars($launchUrl, ENT_QUOTES, 'UTF-8') . '" style="flex: 1; border: none; width: 100%; height: 100%;" allow="clipboard-read; clipboard-write"></iframe>';
    echo '</div>';
}

// Backwards-compatibility aliases for bestdesk and cy_comms
if (!function_exists('bestdesk_config')) {
    function bestdesk_config() { return bestclientdesk_config(); }
    function bestdesk_activate() { return bestclientdesk_activate(); }
    function bestdesk_deactivate() { return bestclientdesk_deactivate(); }
    function bestdesk_output($vars) { return bestclientdesk_output($vars); }
}
if (!function_exists('cy_comms_config')) {
    function cy_comms_config() { return bestclientdesk_config(); }
    function cy_comms_activate() { return bestclientdesk_activate(); }
    function cy_comms_deactivate() { return bestclientdesk_deactivate(); }
    function cy_comms_output($vars) { return bestclientdesk_output($vars); }
}
