Move include code to own file, add confirmation page, implement message and notice flashing, and some lorem ipsum for good measure
parent
bc064a7227
commit
a28e42c49c
@ -0,0 +1,115 @@
|
|||||||
|
<?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."); }
|
||||||
|
|
||||||
|
$_CPHP = true;
|
||||||
|
$_CPHP_CONFIG = "../config.json";
|
||||||
|
require("cphp/base.php");
|
||||||
|
|
||||||
|
require_once('lib/swiftmailer/swift_required.php');
|
||||||
|
|
||||||
|
NewTemplater::RegisterVariableHook("errors", "get_errors");
|
||||||
|
NewTemplater::RegisterVariableHook("notices", "get_notices");
|
||||||
|
|
||||||
|
function get_errors($fetch)
|
||||||
|
{
|
||||||
|
if(isset($_SESSION['errors']))
|
||||||
|
{
|
||||||
|
$errors = $_SESSION['errors'];
|
||||||
|
|
||||||
|
if($fetch === true)
|
||||||
|
{
|
||||||
|
/* We only want to clear out errors if a call to
|
||||||
|
* actually retrieve the errors was made, not just
|
||||||
|
* something like an isempty. */
|
||||||
|
$_SESSION['errors'] = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $errors;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_notices($fetch)
|
||||||
|
{
|
||||||
|
if(isset($_SESSION['notices']))
|
||||||
|
{
|
||||||
|
$notices = $_SESSION['notices'];
|
||||||
|
|
||||||
|
if($fetch === true)
|
||||||
|
{
|
||||||
|
$_SESSION['notices'] = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $notices;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function flash_error($message)
|
||||||
|
{
|
||||||
|
$_SESSION['errors'][] = $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
function flash_notice($message)
|
||||||
|
{
|
||||||
|
$_SESSION['notices'][] = $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
function autoload_redonate($class_name)
|
||||||
|
{
|
||||||
|
global $_APP;
|
||||||
|
|
||||||
|
$class_name = str_replace("\\", "/", strtolower($class_name));
|
||||||
|
|
||||||
|
if(file_exists("classes/{$class_name}.php"))
|
||||||
|
{
|
||||||
|
require_once("classes/{$class_name}.php");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
spl_autoload_register(autoload_redonate);
|
||||||
|
|
||||||
|
function send_mail($to, $subject, $text, $html)
|
||||||
|
{
|
||||||
|
global $mail_transport, $cphp_config;
|
||||||
|
$sMessage = Swift_Message::newInstance();
|
||||||
|
$sMessage->setSubject($subject);
|
||||||
|
$sMessage->setTo($to);
|
||||||
|
$sMessage->setFrom($cphp_config->smtp->from);
|
||||||
|
$sMessage->setBody($text);
|
||||||
|
$sMessage->addPart($html, "text/html");
|
||||||
|
|
||||||
|
echo("<div style=\"border: 1px solid black; padding: 8px; background-color: white; margin: 8px; margin-bottom: 24px;\">
|
||||||
|
<div style=\"font-size: 14px;\">
|
||||||
|
<strong>From:</strong> {$cphp_config->smtp->from}<br>
|
||||||
|
<strong>To:</strong> {$to}<br>
|
||||||
|
<strong>Subject:</strong> {$subject}
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<pre class=\"debug\">{$text}</pre>
|
||||||
|
<hr>
|
||||||
|
<div>
|
||||||
|
{$html}
|
||||||
|
</div>
|
||||||
|
</div>");
|
||||||
|
|
||||||
|
//$mail_transport->send($sMessage);
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
<?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
|
||||||
|
{
|
||||||
|
$sSubscription = Subscription::CreateFromQuery("SELECT * FROM subscriptions WHERE `EmailAddress` = :EmailAddress AND `ConfirmationKey` = :ConfirmationKey AND `Confirmed` = 0",
|
||||||
|
array(":EmailAddress" => $router->uParameters[1], ":ConfirmationKey" => $router->uParameters[2]), 0, true);
|
||||||
|
$sSubscription->uIsConfirmed = true;
|
||||||
|
$sSubscription->InsertIntoDatabase();
|
||||||
|
|
||||||
|
flash_notice("Your subscription was successfully confirmed. Welcome on board!");
|
||||||
|
redirect("/manage/{$sSubscription->sEmailAddress}/{$sSubscription->sSettingsKey}");
|
||||||
|
}
|
||||||
|
catch (NotFoundException $e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$sUser = User::CreateFromQuery("SELECT * FROM users WHERE `EmailAddress` = :EmailAddress AND `ActivationKey` = :ActivationKey AND `Activated` = 0",
|
||||||
|
array(":EmailAddress" => $router->uParameters[1], ":ActivationKey" => $router->uParameters[2]), 0, true);
|
||||||
|
$sUser->uIsActivated = true;
|
||||||
|
$sUser->InsertIntoDatabase();
|
||||||
|
|
||||||
|
$sUser->Authenticate();
|
||||||
|
|
||||||
|
flash_notice("Your account was successfully activated. Welcome on board!");
|
||||||
|
redirect("/dashboard");
|
||||||
|
}
|
||||||
|
catch (NotFoundException $e)
|
||||||
|
{
|
||||||
|
/* No user or subscription with this e-mail address and verification key exists. Bail out.
|
||||||
|
* We'll throw a RouterException so that we only have to deal with 404s in one place. */
|
||||||
|
throw new RouterException("Confirmation key not found.");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
<?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."); }
|
||||||
|
|
||||||
|
$sPageTitle = "Dashboard";
|
||||||
|
$sPageContents = NewTemplater::Render("dashboard", $locale->strings, array());
|
@ -0,0 +1,19 @@
|
|||||||
|
<?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."); }
|
||||||
|
|
||||||
|
$sNotice = empty($sNotice) ? "" : $sNotice;
|
||||||
|
|
||||||
|
$sPageTitle = "Manage your subscriptions";
|
||||||
|
$sPageContents = NewTemplater::Render("subscription/manage", $locale->strings, array("notice" => $sNotice));
|
@ -0,0 +1,9 @@
|
|||||||
|
{%if isempty|notices == false}
|
||||||
|
{%foreach notice in notices}
|
||||||
|
<div class="notices">
|
||||||
|
{%?notice}
|
||||||
|
</div>
|
||||||
|
{%/foreach}
|
||||||
|
{%/if}
|
||||||
|
|
||||||
|
Lorem ipsum indeed.
|
@ -0,0 +1,2 @@
|
|||||||
|
<h2>Thanks!</h2>
|
||||||
|
|
@ -0,0 +1,9 @@
|
|||||||
|
{%if isempty|notices == false}
|
||||||
|
{%foreach notice in notices}
|
||||||
|
<div class="notices">
|
||||||
|
{%?notice}
|
||||||
|
</div>
|
||||||
|
{%/foreach}
|
||||||
|
{%/if}
|
||||||
|
|
||||||
|
Lorem ipsum indeed.
|
Loading…
Reference in New Issue