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