/** * @param $vars */ function InvoicePaidHook_OnAppvCD($vars) { $moduleName = OnAppvCDModule::MODULE_NAME; $invoiceID = $vars['invoiceid']; $qry = 'SELECT OnAppUsersNG.`WHMCSUserID`, OnAppUsersNG.`serverID`, OnAppUsersNG.`OnAppUserID`, tblhosting.`id` AS service_id, tblinvoices.`subtotal` AS subtotal, tblinvoices.`total` AS total, tblproducts.`configoption1` AS settings, tblhosting.`domainstatus` AS status FROM tblinvoices LEFT JOIN OnAppUsersNG ON tblinvoices.`userid` = OnAppUsersNG.`WHMCSUserID` LEFT JOIN tblhosting ON tblhosting.`userid` = OnAppUsersNG.`WHMCSUserID` AND tblhosting.`server` = OnAppUsersNG.`serverID` RIGHT JOIN tblinvoiceitems ON tblinvoiceitems.`invoiceid` = tblinvoices.`id` AND tblinvoiceitems.`relid` = tblhosting.`id` LEFT JOIN tblproducts ON tblproducts.`id` = tblhosting.`packageid` WHERE tblinvoices.`id` = @invoiceID AND tblinvoices.`status` = "Paid" AND tblproducts.`servertype` = "@moduleName" AND tblinvoiceitems.`type` = "@moduleName" GROUP BY tblinvoices.`id`'; $qry = str_replace('@invoiceID', $invoiceID, $qry); $qry = str_replace('@moduleName', $moduleName, $qry); $result = full_query($qry); if (mysql_num_rows($result) == 0) { return; } $data = mysql_fetch_assoc($result); if ($data['status'] == 'Suspended') { # check for other unpaid invoices for this service $qry = 'SELECT tblinvoices.`id` FROM tblinvoices RIGHT JOIN tblinvoiceitems ON tblinvoiceitems.`invoiceid` = tblinvoices.`id` AND tblinvoiceitems.`relid` = @serviceID WHERE tblinvoices.`status` = "Unpaid" GROUP BY tblinvoices.`id`'; $qry = str_replace('@serviceID', $data['service_id'], $qry); $result = full_query($qry); if (mysql_num_rows($result) == 0) { if (!function_exists('serverunsuspendaccount')) { $path = dirname(dirname(dirname(__DIR__))) . '/includes/'; require_once $path . 'modulefunctions.php'; } serverunsuspendaccount($data['service_id']); } } $qry = 'SELECT `secure`, `username`, `hostname`, `password`, `ipaddress` FROM tblservers WHERE `type` = "@moduleName" AND `id` = @serverID'; $qry = str_replace('@serverID', $data['server_id'], $qry); $qry = str_replace('@moduleName', $moduleName, $qry); $result = full_query($qry); $server = mysql_fetch_assoc($result); $server['password'] = decrypt($server['password']); if ($server['secure']) { $server['address'] = 'https://'; } else { $server['address'] = 'http://'; } if (empty($server['ipaddress'])) { $server['address'] .= $server['hostname']; } else { $server['address'] .= $server['ipaddress']; } unset($server['ipaddress'], $server['hostname'], $server['secure']); # get OnApp amount $result = select_query($moduleName . '_Cache', 'data', ['itemID' => 123, 'type' => 'invoiceData']); $amount = mysql_fetch_object($result)->data; if ($amount) { $payment = new OnApp_Payment(); $payment->auth($server['address'], $server['username'], $server['password']); $payment->_user_id = $data['OnAppUserID']; $payment->_amount = $amount; $payment->_invoice_number = $invoiceID; $payment->save(); $error = $payment->getErrorsAsString(); if (empty($error)) { $msg = $moduleName . ' payment was sent. Service ID #' . $data['service_id'] . ', amount: ' . $amount; # delete invoice data $where = ['itemID' => $invoiceID, 'type' => 'invoiceData']; delete_query($moduleName . '_Cache', $where); } else { $msg = 'ERROR with ' . $moduleName . ' payment for service ID #' . $data['service_id'] . ': ' . $error; } } else { $msg = 'ERROR with ' . $moduleName . ' payment for service ID #' . $data['service_id'] . ': Cannot find ' . $moduleName . ' amount'; } logactivity($msg); }
function hook_onappusers_InvoicePaid($vars) { $invoice_id = $vars['invoiceid']; $qry = 'SELECT tblonappusers.`client_id`, tblonappusers.`server_id`, tblonappusers.`onapp_user_id`, tblhosting.`id` AS service_id, tblinvoices.`subtotal` AS subtotal, tblinvoices.`total` AS total, tblproducts.`configoption1` AS settings, tblhosting.`domainstatus` AS status FROM tblinvoices LEFT JOIN tblonappusers ON tblinvoices.`userid` = tblonappusers.`client_id` LEFT JOIN tblhosting ON tblhosting.`userid` = tblonappusers.`client_id` AND tblhosting.`server` = tblonappusers.`server_id` RIGHT JOIN tblinvoiceitems ON tblinvoiceitems.`invoiceid` = tblinvoices.`id` AND tblinvoiceitems.`relid` = tblhosting.`id` LEFT JOIN tblproducts ON tblproducts.`id` = tblhosting.`packageid` WHERE tblinvoices.`id` = :invoiceID AND tblinvoices.`status` = "Paid" AND tblproducts.`servertype` = "onappusers" AND tblinvoiceitems.`type` = "onappusers" GROUP BY tblinvoices.`id`'; $qry = str_replace(':invoiceID', $invoice_id, $qry); $result = full_query($qry); if (mysql_num_rows($result) == 0) { return; } $data = mysql_fetch_assoc($result); $path = dirname(dirname(dirname(__DIR__))) . '/includes/'; if ($data['status'] == 'Suspended') { // check for other unpaid invoices for this service $qry = 'SELECT tblinvoices.`id` FROM tblinvoices RIGHT JOIN tblinvoiceitems ON tblinvoiceitems.`invoiceid` = tblinvoices.`id` AND tblinvoiceitems.`relid` = :serviceID WHERE tblinvoices.`status` = "Unpaid" GROUP BY tblinvoices.`id`'; $qry = str_replace(':serviceID', $data['service_id'], $qry); $result = full_query($qry); if (mysql_num_rows($result) == 0) { if (!function_exists('serverunsuspendaccount')) { require_once $path . 'modulefunctions.php'; } serverunsuspendaccount($data['service_id']); } } if (!defined('ONAPP_WRAPPER_INIT')) { define('ONAPP_WRAPPER_INIT', $path . 'wrapper/OnAppInit.php'); require_once ONAPP_WRAPPER_INIT; } $qry = 'SELECT `secure`, `username`, `hostname`, `password`, `ipaddress` FROM tblservers WHERE `type` = "onappusers" AND `id` = :serverID'; $qry = str_replace(':serverID', $data['server_id'], $qry); $result = full_query($qry); $server = mysql_fetch_assoc($result); $server['password'] = decrypt($server['password']); if ($server['secure']) { $server['address'] = 'https://'; } else { $server['address'] = 'http://'; } if (empty($server['ipaddress'])) { $server['address'] .= $server['hostname']; } else { $server['address'] .= $server['ipaddress']; } unset($server['ipaddress'], $server['hostname'], $server['secure']); # get OnApp amount $qry = 'SELECT `amount` FROM `tblonappusers_invoices` LIMIT 1'; $res = mysql_query($qry); $amount = mysql_result($res, 0); $payment = new OnApp_Payment(); $payment->auth($server['address'], $server['username'], $server['password']); $payment->_user_id = $data['onapp_user_id']; $payment->_amount = $amount; $payment->_invoice_number = $invoice_id; $payment->save(); $where = array('id' => $invoice_id); delete_query('tblonappusers_invoices', $where); $error = $payment->getErrorsAsString(); if (empty($error)) { logactivity('OnApp payment was sent. Service ID #' . $data['service_id'] . ', amount: ' . $amount); } else { logactivity('ERROR with OnApp payment for service ID #' . $data['service_id'] . ': ' . $error); } }