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); 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)); } }