Beispiel #1
0
/**
 * Handles updating WebsitePanel account details when a client or administrator updates a client's details
 * 
 * @access public
 * @param array $params WHMCS parameters
 * @throws Exception
 */
function websitepanel_sync_ClientEdit($params)
{
    // WHMCS server parameters & package parameters
    $userId = $params['userid'];
    $serviceId = 0;
    // Query for the users WebsitePanel accounts - If they do not have any, just ignore the request
    $result = full_query("SELECT h.username AS username, s.ipaddress AS serverip, s.hostname AS serverhostname, s.secure AS serversecure, s.username AS serverusername, s.password AS serverpassword, p.configoption6 AS configoption6, h.id AS serviceid FROM `tblhosting` AS h, `tblservers` AS s, `tblproducts` AS p WHERE h.userid = {$userId} AND h.packageid = p.id AND h.server = s.id AND s.type = 'websitepanel' AND h.domainstatus IN ('Active', 'Suspended')");
    while (($row = mysql_fetch_array($result)) != false) {
        // Start updating the users account details
        $serviceId = $row['serviceid'];
        $username = $row['username'];
        $serverUsername = $row['serverusername'];
        $serverPassword = decrypt($row['serverpassword']);
        $serverPort = $row['configoption6'];
        $serverHost = empty($row['serverhostname']) ? $row['serverip'] : $row['serverhostname'];
        $serverSecure = $row['serversecure'] == 'on' ? TRUE : FALSE;
        $clientsDetails = $params;
        try {
            // Create the WebsitePanel Enterprise Server Client object instance
            $wsp = new websitepanel_EnterpriseServer($serverUsername, $serverPassword, $serverHost, $serverPort, $serverSecure);
            // Get the user's details from WebsitePanel - We need the username
            $user = $wsp->getUserByUsername($username);
            if (empty($user)) {
                throw new Exception("User {$username} does not exist - Cannot update account details for unknown user");
            }
            // Update the user's account details using the previous details + WHMCS's details (address, city, state etc.)
            $userParams = array('RoleId' => $user['RoleId'], 'Role' => $user['Role'], 'StatusId' => $user['StatusId'], 'Status' => $user['Status'], 'LoginStatusId' => $user['LoginStatusId'], 'LoginStatus' => $user['LoginStatus'], 'FailedLogins' => $user['FailedLogins'], 'UserId' => $user['UserId'], 'OwnerId' => $user['OwnerId'], 'IsPeer' => $user['IsPeer'], 'Created' => $user['Created'], 'Changed' => $user['Changed'], 'IsDemo' => $user['IsDemo'], 'Comments' => $user['Comments'], 'LastName' => $clientsDetails['lastname'], 'Username' => $user['Username'], 'Password' => $user['Password'], 'FirstName' => $clientsDetails['firstname'], 'Email' => $clientsDetails['email'], 'PrimaryPhone' => $clientsDetails['phonenumber'], 'Zip' => $clientsDetails['postcode'], 'InstantMessenger' => '', 'Fax' => '', 'SecondaryPhone' => '', 'SecondaryEmail' => '', 'Country' => $clientsDetails['country'], 'Address' => $clientsDetails['address1'], 'City' => $clientsDetails['city'], 'State' => $clientsDetails['state'], 'HtmlMail' => $user['HtmlMail'], 'CompanyName' => $clientsDetails['companyname'], 'EcommerceEnabled' => $user['EcommerceEnabled'], 'SubscriberNumber' => '');
            // Execute the UpdateUserDetails method
            $wsp->updateUserDetails($userParams);
            // Add log entry to client log
            logactivity("WebsitePanel Sync - Account {$username} contact details updated successfully", $userId);
        } catch (Exception $e) {
            // Error message to log / return
            $errorMessage = "websitepanel_sync_ClientEdit Fault: (Code: {$e->getCode()}, Message: {$e->getMessage()}, Service ID: {$serviceId})";
            // Log to WHMCS
            logactivity($errorMessage, $userId);
        }
    }
}
Beispiel #2
0
/**
 * Creates the WebsitePanel user account and package
 * 
 * @param array $params WHMCS parameters
 * @throws Exception
 * @return string
 */
function websitepanel_CreateAccount($params)
{
    // WHMCS server parameters & package parameters
    $serverUsername = $params['serverusername'];
    $serverPassword = $params['serverpassword'];
    $serverPort = $params['configoption6'];
    $serverHost = empty($params['serverhostname']) ? $params['serverip'] : $params['serverhostname'];
    $serverSecure = $params['serversecure'];
    $username = $params['username'];
    $password = $params['password'];
    $domain = $params['domain'];
    $packageType = $params['type'];
    $clientsDetails = $params['clientsdetails'];
    $userId = $clientsDetails['userid'];
    $serviceId = $params['serviceid'];
    // WebsitePanel API parameters
    $planId = $params['configoption4'];
    $parentPackageId = $params['configoption5'];
    $roleId = $packageType == 'reselleraccount' ? 2 : 3;
    $htmlMail = $params['configoption14'] == 'on';
    $sendAccountLetter = $params['configoption9'] == 'on';
    $sendPackageLetter = $params['configoption10'] == 'on';
    $createMailAccount = $params['configoption11'] == 'on';
    $createTempDomain = $params['configoption13'] == 'on';
    $createFtpAccount = $params['configoption12'] == 'on';
    $createWebsite = $params['configoption15'] == 'on';
    $websitePointerName = $params['configoption17'];
    $createZoneRecord = $params['configoption18'] == 'on';
    try {
        // Create the WebsitePanel Enterprise Server Client object instance
        $wsp = new websitepanel_EnterpriseServer($serverUsername, $serverPassword, $serverHost, $serverPort, $serverSecure);
        // Create the user's new account using the CreateUserWizard method
        $userParams = array('parentPackageId' => $parentPackageId, 'username' => $username, 'password' => $password, 'roleId' => $roleId, 'firstName' => $clientsDetails['firstname'], 'lastname' => $clientsDetails['lastname'], 'email' => $clientsDetails['email'], 'secondaryEmail' => '', 'htmlMail' => $htmlMail, 'sendAccountLetter' => $sendAccountLetter, 'createPackage' => TRUE, 'planId' => $planId, 'sendPackageLetter' => $sendPackageLetter, 'domainName' => $domain, 'tempDomain' => $createTempDomain, 'createWebSite' => $createWebsite, 'createFtpAccount' => $createFtpAccount, 'ftpAccountName' => $username, 'createMailAccount' => $createMailAccount, 'hostName' => $websitePointerName, 'createZoneRecord' => $createZoneRecord);
        // Execute the CreateUserWizard method
        $result = $wsp->createUserWizard($userParams);
        if ($result < 0) {
            // Something went wrong
            throw new Exception('Fault: ' . websitepanel_EnterpriseServer::getFriendlyError($result), $result);
        }
        // Log the module call
        websitepanel_logModuleCall(__FUNCTION__, $params, $result);
        // Get the newly created user's details from WebsitePanel so we can update the account details completely
        $user = $wsp->getUserByUsername($username);
        // Update the user's account details using the previous details + WHMCS's details (address, city, state etc.)
        $userParams = array('RoleId' => $roleId, 'Role' => $user['Role'], 'StatusId' => $user['StatusId'], 'Status' => $user['Status'], 'LoginStatusId' => $user['LoginStatusId'], 'LoginStatus' => $user['LoginStatus'], 'FailedLogins' => $user['FailedLogins'], 'UserId' => $user['UserId'], 'OwnerId' => $user['OwnerId'], 'IsPeer' => $user['IsPeer'], 'Created' => $user['Created'], 'Changed' => $user['Changed'], 'IsDemo' => $user['IsDemo'], 'Comments' => $user['Comments'], 'LastName' => $clientsDetails['lastname'], 'Username' => $username, 'Password' => $password, 'FirstName' => $clientsDetails['firstname'], 'Email' => $clientsDetails['email'], 'PrimaryPhone' => $clientsDetails['phonenumber'], 'Zip' => $clientsDetails['postcode'], 'InstantMessenger' => '', 'Fax' => '', 'SecondaryPhone' => '', 'SecondaryEmail' => '', 'Country' => $clientsDetails['country'], 'Address' => $clientsDetails['address1'], 'City' => $clientsDetails['city'], 'State' => $clientsDetails['state'], 'HtmlMail' => $htmlMail, 'CompanyName' => $clientsDetails['companyname'], 'EcommerceEnabled' => $roleId == 2, 'SubscriberNumber' => '');
        // Execute the UpdateUserDetails method
        $wsp->updateUserDetails($userParams);
        // Notify success
        return 'success';
    } catch (Exception $e) {
        // Error message to log / return
        $errorMessage = "CreateAccount Fault: (Code: {$e->getCode()}, Message: {$e->getMessage()}, Service ID: {$serviceId})";
        // Log to WHMCS
        logactivity($errorMessage, $userId);
        // Log the module call
        websitepanel_logModuleCall(__FUNCTION__, $params, $e->getMessage());
        // Notify failure - Houston we have a problem!
        return $errorMessage;
    }
}