Ejemplo n.º 1
0
            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>
Ejemplo n.º 2
0
                        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.");
            }
        }
    }
}