throw new PurchaseException(t("Could not generate :currency address for purchase; please try again later.", array(':currency' => get_currency_abbr($currency)))); } // register it to the system as a normal blockchain address, but we need to get received rather than balance $q = db()->prepare("INSERT INTO addresses SET user_id=:user_id, address=:address, currency=:currency, is_received=1"); $q->execute(array("user_id" => get_site_config('system_user_id'), "address" => $address['address'], "currency" => $currency)); $new_address_id = db()->lastInsertId(); // create a new outstanding premium $q = db()->prepare("INSERT INTO outstanding_premiums SET user_id=:user_id, premium_address_id=:pid, address_id=:aid, balance=:balance, months=:months, years=:years"); $q->execute(array("user_id" => user_id(), "pid" => $address['id'], "aid" => $new_address_id, "balance" => $cost, "months" => $months, "years" => $years)); $purchase_id = db()->lastInsertId(); // address is now in use $q = db()->prepare("UPDATE premium_addresses SET is_used=1,used_at=NOW() WHERE id=?"); $q->execute(array($address['id'])); // try sending email, if an email address has been registered if ($user['email']) { send_user_email($user, "purchase", array("name" => $user['name'] ? $user['name'] : $user['email'], "amount" => number_format_autoprecision($cost), "currency" => get_currency_abbr($currency), "currency_name" => get_currency_name($currency), "address" => $address['address'], "explorer" => get_explorer_address($currency, $address['address']), "url" => absolute_url(url_for("user#user_outstanding")))); } // success! inform the user redirect(url_for('user#user_outstanding', array('new_purchase' => $purchase_id))); } catch (PurchaseException $e) { log_uncaught_exception($e); $errors[] = $e->getMessage(); } } page_header(t("Purchase Premium"), "page_purchase", array('js' => 'purchase')); ?> <h1><?php echo ht("Purchase Premium with :currency", array(':currency' => get_currency_name($currency))); ?> </h1>
crypto_log("Sent e-mail to " . htmlspecialchars($user['email']) . "."); } } } else { // have we reminded recently? if (!$address['last_reminder'] || strtotime($address['last_reminder'] . " +" . get_site_config('outstanding_reminder_hours') . " hour") < time()) { // send a reminder if ($user['email']) { send_user_email($user, "purchase_reminder", array("name" => $user['name'] ? $user['name'] : $user['email'], "amount" => number_format_autoprecision($address['balance']), "received" => number_format_autoprecision($balance['balance']), "currency" => get_currency_abbr($address['currency']), "currency_name" => get_currency_name($address['currency']), "address" => $address['address'], "explorer" => get_explorer_address($address['currency'], $address['address']), "url" => absolute_url(url_for("user#user_outstanding")), "reminder" => $reminder, "cancelled" => $cancelled)); crypto_log("Sent e-mail to " . htmlspecialchars($user['email']) . "."); } $q = db()->prepare("UPDATE outstanding_premiums SET last_reminder=NOW() WHERE id=?"); $q->execute(array($address['id'])); crypto_log("Sent reminder message on outstanding premium payment."); } } } else { if ($balance['balance'] > 0 && $balance['balance'] > $address['last_balance']) { // issue #231: have we made a new payment since we looked last? // send a reminder if ($user['email']) { send_user_email($user, "purchase_further", array("name" => $user['name'] ? $user['name'] : $user['email'], "amount" => number_format_autoprecision($address['balance']), "received" => number_format_autoprecision($balance['balance']), "difference" => number_format_autoprecision($balance['balance'] - $address['last_balance']), "currency" => get_currency_abbr($address['currency']), "currency_name" => get_currency_name($address['currency']), "address" => $address['address'], "explorer" => get_explorer_address($address['currency'], $address['address']), "url" => absolute_url(url_for("user#user_outstanding")), "reminder" => $reminder, "cancelled" => $cancelled)); crypto_log("Sent e-mail to " . htmlspecialchars($user['email']) . "."); } $q = db()->prepare("UPDATE outstanding_premiums SET last_balance=? WHERE id=?"); $q->execute(array($balance['balance'], $address['id'])); crypto_log("Sent received payment message on outstanding premium payment."); } } } }