Implement change requests when user with existing subscription attempts to subscribe again
parent
3fe016dc54
commit
c79658a878
@ -0,0 +1,40 @@
|
|||||||
|
<?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."); }
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$sChangeRequest = new ChangeRequest($router->uParameters[2]);
|
||||||
|
}
|
||||||
|
catch (NotFoundException $e)
|
||||||
|
{
|
||||||
|
throw new RouterException("No such change request exists.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if($sChangeRequest->sSubscription->uEmailAddress != $router->uParameters[1])
|
||||||
|
{
|
||||||
|
throw new RouterException("The given e-mail address does not match the e-mail address for this change request.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if($sChangeRequest->uKey != $router->uParameters[3])
|
||||||
|
{
|
||||||
|
throw new RouterException("The given key does not match the key for this change request.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if($sChangeRequest->sIsConfirmed === true)
|
||||||
|
{
|
||||||
|
throw new RouterException("The change request was already fulfilled.");
|
||||||
|
}
|
||||||
|
|
||||||
|
$sRouterAuthenticated = true;
|
@ -0,0 +1,72 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* projectname 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 ChangeRequest extends CPHPDatabaseRecordClass
|
||||||
|
{
|
||||||
|
public $table_name = "change_requests";
|
||||||
|
public $fill_query = "SELECT * FROM change_requests WHERE `Id` = :Id";
|
||||||
|
public $verify_query = "SELECT * FROM change_requests WHERE `Id` = :Id";
|
||||||
|
|
||||||
|
public $prototype = array(
|
||||||
|
'string' => array(
|
||||||
|
'OldCurrency' => "OldCurrency",
|
||||||
|
'NewCurrency' => "NewCurrency",
|
||||||
|
'Key' => "Key"
|
||||||
|
),
|
||||||
|
'numeric' => array(
|
||||||
|
'SubscriptionId' => "SubscriptionId",
|
||||||
|
'CampaignId' => "CampaignId",
|
||||||
|
'OldAmount' => "OldAmount",
|
||||||
|
'NewAmount' => "NewAmount"
|
||||||
|
),
|
||||||
|
'boolean' => array(
|
||||||
|
'IsConfirmed' => "Confirmed"
|
||||||
|
),
|
||||||
|
'timestamp' => array(
|
||||||
|
'Date' => "Date"
|
||||||
|
),
|
||||||
|
'campaign' => array(
|
||||||
|
'Campaign' => "CampaignId"
|
||||||
|
),
|
||||||
|
'subscription' => array(
|
||||||
|
'Subscription' => "SubscriptionId"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
public function GenerateEmail()
|
||||||
|
{
|
||||||
|
global $locale;
|
||||||
|
|
||||||
|
$sText = NewTemplater::Render("email/change.txt", $locale->strings, array(
|
||||||
|
"campaign-name" => $this->sCampaign->sName,
|
||||||
|
"confirmation-url" => "http://redonate.net/change/{$this->sSubscription->sEmailAddress}/{$this->sId}/{$this->sKey}",
|
||||||
|
"unsubscribe-url" => "http://redonate.com/manage/{$this->sSubscription->sEmailAddress}/{$this->sSubscription->sSettingsKey}",
|
||||||
|
"old" => Currency::Format($this->sOldCurrency, $this->sOldAmount),
|
||||||
|
"new" => Currency::Format($this->sNewCurrency, $this->sNewAmount)
|
||||||
|
));
|
||||||
|
|
||||||
|
$sHtml = NewTemplater::Render("email/layout.html", $locale->strings, array(
|
||||||
|
"contents" => NewTemplater::Render("email/change.html", $locale->strings, array(
|
||||||
|
"campaign-name" => $this->sCampaign->sName,
|
||||||
|
"confirmation-url" => "http://redonate.net/change/{$this->sSubscription->sEmailAddress}/{$this->sId}/{$this->sKey}",
|
||||||
|
"unsubscribe-url" => "http://redonate.com/manage/{$this->sSubscription->sEmailAddress}/{$this->sSubscription->sSettingsKey}",
|
||||||
|
"old" => Currency::Format($this->sOldCurrency, $this->sOldAmount),
|
||||||
|
"new" => Currency::Format($this->sNewCurrency, $this->sNewAmount)
|
||||||
|
))
|
||||||
|
));
|
||||||
|
|
||||||
|
return array("text" => $sText, "html" => $sHtml);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
<?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."); }
|
||||||
|
|
||||||
|
$sChangeRequest->sSubscription->uCurrency = $sChangeRequest->uNewCurrency;
|
||||||
|
$sChangeRequest->sSubscription->uAmount = $sChangeRequest->uNewAmount;
|
||||||
|
$sChangeRequest->sSubscription->InsertIntoDatabase();
|
||||||
|
|
||||||
|
$sChangeRequest->uIsConfirmed = true;
|
||||||
|
$sChangeRequest->InsertIntoDatabase();
|
||||||
|
|
||||||
|
flash_notice("The change was successfully applied.");
|
||||||
|
redirect("/manage/{$sChangeRequest->sSubscription->sEmailAddress}/{$sChangeRequest->sSubscription->sSettingsKey}");
|
@ -0,0 +1,16 @@
|
|||||||
|
<?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."); }
|
||||||
|
|
||||||
|
throw new NotFoundException("No such change request was found.");
|
@ -0,0 +1,44 @@
|
|||||||
|
<p>
|
||||||
|
Hi there,
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You entered your e-mail address for a campaign that you already
|
||||||
|
subscribed to in the past. If you meant to change your settings, please
|
||||||
|
click the confirmation link, and we'll update your settings.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If you didn't mean to change your settings and want to keep things as
|
||||||
|
they were before, you can simply ignore this e-mail. If you have any
|
||||||
|
further questions, don't hesitate to reply to this e-mail!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Campaign: {%?campaign-name}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Previous monthly amount: {%?old}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>New monthly amount: {%?new}</strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Click this link to confirm the change:
|
||||||
|
<a href="{%?confirmation-url}">{%?confirmation-url}</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<em>- Sven Slootweg, ReDonate</em>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If you want to cancel your donation pledge or change your settings, please visit
|
||||||
|
<a href="{%?unsubscribe-url}">{%?unsubscribe-url}</a>.
|
||||||
|
</p>
|
||||||
|
|
@ -0,0 +1,25 @@
|
|||||||
|
Hi there,
|
||||||
|
|
||||||
|
You entered your e-mail address for a campaign that you already
|
||||||
|
subscribed to in the past. If you meant to change your settings, please
|
||||||
|
click the confirmation link, and we'll update your settings.
|
||||||
|
|
||||||
|
If you didn't mean to change your settings and want to keep things as
|
||||||
|
they were before, you can simply ignore this e-mail. If you have any
|
||||||
|
further questions, don't hesitate to reply to this e-mail!
|
||||||
|
|
||||||
|
Campaign: {%?campaign-name}
|
||||||
|
|
||||||
|
Previous monthly amount: {%?old}
|
||||||
|
|
||||||
|
New monthly amount: {%?new}
|
||||||
|
|
||||||
|
Click this link to confirm the change: {%?confirmation-url}
|
||||||
|
|
||||||
|
- Sven Slootweg, ReDonate
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
If you want to cancel your donation pledge or change other settings,
|
||||||
|
please visit {%?unsubscribe-url}.
|
||||||
|
|
Loading…
Reference in New Issue