You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
redonate/public_html/classes/paymentmethod.php

111 lines
2.7 KiB
PHP

<?php
/*
* ReDonate is more free software. It is licensed under the WTFPL, which
* allows you to do pretty much anything with it, without having to
* ask permission. Commercial use is allowed, and no attribution is
* required. We do politely request that you share your modifications
* to benefit other developers, but you are under no enforced
* obligation to do so :)
*
* Please read the accompanying LICENSE document for the full WTFPL
* licensing text.
*/
if(!isset($_APP)) { die("Unauthorized."); }
class PaymentMethod extends CPHPDatabaseRecordClass
{
public $table_name = "payment_methods";
public $fill_query = "SELECT * FROM payment_methods WHERE `Id` = :Id";
public $verify_query = "SELECT * FROM payment_methods WHERE `Id` = :Id";
public $prototype = array(
'string' => array(
'Address' => "Address",
'CustomName' => "CustomName"
),
'numeric' => array(
'Type' => "Type",
'CampaignId' => "CampaignId"
),
'campaign' => array(
'Campaign' => "Campaign"
)
);
const PAYPAL = 1;
const BITCOIN = 2;
const IBAN = 3;
public function GetLogo()
{
switch($this->sType)
{
case PaymentMethod::PAYPAL:
return array("image" => "/static/images/paypal.png", "text" => "PayPal");
case PaymentMethod::BITCOIN:
return array("image" => "/static/images/bitcoin.png", "text" => "Bitcoin");
case PaymentMethod::IBAN:
return array("text" => "IBAN");
case 0:
return array("text" => $this->sCustomName);
default:
return array("text" => "Unknown");
}
}
public function GenerateUrl($sRequest)
{
$sUrlName = $this->GetUrlName();
return "http://redonate.net/pay/{$sRequest->sSubscription->sEmailAddress}/{$sRequest->sId}/{$sRequest->sKey}/{$sUrlName}";
}
public function GetName()
{
switch($this->sType)
{
case PaymentMethod::PAYPAL:
return "PayPal";
case PaymentMethod::BITCOIN:
return "Bitcoin";
case 0:
return "{$this->sCustomName}";
default:
throw Exception("No valid payment method type.");
}
}
public function GetUrlName()
{
switch($this->sType)
{
case PaymentMethod::PAYPAL:
return "paypal";
case PaymentMethod::BITCOIN:
return "bitcoin";
case 0:
return "{$this->sId}";
default:
throw Exception("No valid payment method type.");
}
}
public static function ValidateAddress($type, $address)
{
switch($type)
{
case PaymentMethod::PAYPAL:
return filter_var($address, FILTER_VALIDATE_EMAIL) || preg_match("/^[A-Z0-9]{13}$/", $address);
case PaymentMethod::BITCOIN:
return (preg_match("/^[a-zA-Z1-9]{27,35}$/", $address) == true);
default:
return true;
}
}
public static function CheckIfValidMethod($type)
{
return in_array($type, array(0, PaymentMethod::PAYPAL, PaymentMethod::BITCOIN));
}
}