public function content() { global $dbh, $postvar, $getvar, $instance; if (!$dbh->config("delacc")) { die('This feature has been disabled.'); } else { if ($_POST) { $user = $_SESSION['cuser']; $pass = $postvar['password']; $client = $dbh->client($user); unset($where); $where[] = array("is_paid", "=", "0", "AND"); $where[] = array("uid", "=", $user); $balance_query = $dbh->select("invoices", $where, 0, "1", 1); if ($dbh->num_rows($balance_query) != 0) { main::errors("You can't close your account with an outstanding balance. Please contact an administrator for assistance or pay any unpaid invoices."); } if (crypto::passhash($pass, $client['salt']) == $client['password']) { if (server::terminate($client['id'], "", 1)) { main::errors("Your account has been cancelled successfully."); session_destroy(); } else { main::errors("Your account wasn't cancelled. Please try again or contact your system administrator."); } } else { main::errors("The password entered is incorrect."); } } echo style::replaceVar("tpl/client/delete-account.tpl"); } }
private function TerminateClient($client) { global $dbh, $postvar, $getvar, $instance; if (!$postvar['submitreason']) { $client_uname = main::uname($client['id']); $reason_array['WARNTEXT'] = 'CAUTION: If you proceed, the account "' . $client_uname . '" will be completely and irrevocably removed from the server and THT.<br><br>Why are you terminating this account? Leave blank if you just feel like terminating them.'; $reason_array['ACTION'] = 'terminating'; $reason_array['ACTIONBUTT'] = 'Terminate Client'; $clientview_array['BOX'] = ""; $clientview_array['CONTENT'] = style::replaceVar("tpl/admin/clients/reason.tpl", $reason_array); return $clientview_array; } else { $command = server::terminate($client['id'], $postvar['reason']); if ($command == true) { //Terminated main::done(); } else { main::errors($command); } } }
public function cron() { global $dbh, $postvar, $getvar, $instance; $packages_query = $dbh->select("packages", array("type" => "paid"), 0, 0, 1); $packages_num_rows = $dbh->num_rows($packages_query); //Do we have paid packages? if ($packages_num_rows) { while ($packages_data = $dbh->fetch_array($packages_query)) { $i++; //Do we have multiple packages and aren't on the last one? if ($packages_data < $i) { //Did we already pull one package? If so, we don't set the flag for the parenthesis. if ($pulled_one) { $where[] = array("pid", "=", $packages_data['id'], "OR"); //We are on the first listing of the paid packages, so we set the flag for the opening parenthesis and mark it that we pulled one already. } else { $where[] = array("pid", "=", $packages_data['id'], "OR", 1); $pulled_one = 1; } } else { //Are we on the last listing of paid listings? If so, we close the parenthesis by setting that flag. if ($pulled_one) { $where[] = array("pid", "=", $packages_data['id'], "", 1); //We only had one listing, so we don't use parenthesis and we don't use "OR." } else { $where[] = array("pid", "=", $packages_data['id']); } } //So we can later grab the package's information without needing to repull this data. $packages_info[$packages_data['id']] = $packages_data; } $time = time(); //Look at every last invoice. $invoices_query = $dbh->select("invoices"); while ($invoices_data = $dbh->fetch_array($invoices_query)) { $uid = $invoices_data['uid']; $client = $dbh->client($uid); //Skip this invoice if it belongs to a user marked as a free user. if ($client['freeuser']) { continue; } //If the invoice is older than 30 days and we haven't issued a new invoice yet... (This makes sure the user is still on the package //before issuing a new invoice for it.) if ($time > $invoices_data['created'] + 2592000 && !in_array($uid, $invoiced_to) && $invoices_data['pid'] == $client['pid']) { $pack_additional = type::additional($client['pid']); $amount = coupons::get_discount("paid", $pack_additional['monthly'], $client['user']); invoice::create($uid, $amount, $time, "Your hosting package invoice for this billing cycle. Package: " . $packages_info[$client['pid']]['name']); $invoiced_to[] = $uid; //Track what clients have been sent a new invoice. } $lastmonth = $time - 2592000; $suspenddays = $dbh->config('suspensiondays'); $terminationdays = $suspenddays + $dbh->config('terminationdays'); $suspendseconds = $suspenddays * 24 * 60 * 60; $terminateseconds = $dbh->config('terminationdays') * 24 * 60 * 60; //If we have an unpaid bill that's greater than $0 and it's past it's due date... if ($invoices_data['due'] < $time and $invoices_data['is_paid'] == 0 && $invoices_data['amount'] > 0) { //If we have a bill that's overdue by $terminationdays + $suspenddays, then we terminate the account... if ($time - $suspendseconds - $terminateseconds > $invoices_data['due']) { server::terminate($uid, "Your account was overdue for more than " . $terminationdays . " days."); $checked_term = 1; //If we have a bill that's overdue by $suspenddays and the client is active, then we suspend them... //Just an FYI, if I start(ed) charging for this script, check The Pirate Bay for this script as I always upload my payware stuff there since I know not everyone can afford to pay me. } elseif ($time - $suspendseconds > $invoices_data['due'] && $client['status'] == '1') { server::suspend($uid, "Your account is overdue. Please log in and pay your invoice to bring your account out of suspension."); } } } //If the user does not have an invoice yet and never had one, this will create one for them. The portion above //handles creating NEW invoices. (It checks for outdated ones and such.) $users_query = $dbh->select("users", $where, 0, 0, 1); while ($users_data = $dbh->fetch_array($users_query)) { //Skip this user if its marked as a free user. if ($users_data['freeuser']) { continue; } $invoice_data = $dbh->select("invoices", array("pid", "=", $users_data['pid'])); if (!$invoice_data['id']) { $monthly = type::additional($users_data['pid']); $amount = $monthly['monthly']; $amount = coupons::get_discount("paid", $amount, $users_data['id']); invoice::create($users_data['id'], $amount, $time + 30 * 24 * 60 * 60, "Your hosting package invoice for this billing cycle. Package: " . $packages_info[$users_data['pid']]['name']); // Create Invoice +30 Days } } } }