v1.2.0
aymm 2021-04-17 16:04:34 +02:00
parent 8e6b0d3687
commit 52ee54f5f9
Signed by: phlaym
GPG Key ID: A06651BAB6777237
7 changed files with 75 additions and 50 deletions

View File

@ -8,8 +8,8 @@ if (isset($_GET['code'])) {
if ($success) { if ($success) {
redirect('index.php'); redirect('index.php');
} else { } else {
die('Echo error authenticating'); quit(get_page_header().'Echo error authenticating');
} }
} else { } else {
die('error authenticating: ' . $_GET['error_message']); quit(get_page_header().'Echo error authenticating: '. $_GET['error_message']);
} }

View File

@ -81,12 +81,23 @@ function get_source_set($user, int $base_size, int $max_scale = 3): string
return implode(', ', $srcset_entries); return implode(', ', $srcset_entries);
} }
function make_banner(string $type, string $content): string function make_banner(string $type, string $content, string $custom_symbol = null): string
{ {
if (empty($custom_symbol)) {
$custom_symbol = $type === 'success' ? '✓' : '𐄂';
}
return '<div class="banner-wrapper">' return '<div class="banner-wrapper">'
. ' <div class="' . ' <div class="'
. $type . $type
. ' banner"><span>✓</span>' . ' banner"><span>'
. $custom_symbol
. '</span>'
. $content . $content
. '</div></div>'; . '</div></div>';
} }
function quit(string $error, string $error_details = '')
{
die(make_banner('error', $error) . $error_details . get_page_footer());
}

View File

@ -13,11 +13,11 @@ use APnutI\Entities\User;
try { try {
echo get_page_header('New Poll', true, ['new_poll']); echo get_page_header('New Poll', true, ['new_poll']);
} catch (\Exception $e) { } catch (\Exception $e) {
die('Something went wrong :( "'.$e->getMessage().'"' . get_page_footer()); quit('Something went wrong :( "'.$e->getMessage().'"');
} }
if (!$api->isAuthenticated(false, true)) { if (!$api->isAuthenticated(false, true)) {
die('You need to be logged in to create a new poll!' . get_page_footer()); quit('You need to be logged in to create a new poll!');
} }
if (!empty($_POST['submit'])) { if (!empty($_POST['submit'])) {
@ -34,7 +34,7 @@ if (!empty($_POST['submit'])) {
$poll = Poll::create($api, $prompt, $options, $max_options, $duration_total_minutes, $is_anonymous, $is_public); $poll = Poll::create($api, $prompt, $options, $max_options, $duration_total_minutes, $is_anonymous, $is_public);
redirect('post_poll.php?poll_token='.$poll->token.'&id='.$poll->id.'&prompt='.urlencode($prompt)); redirect('post_poll.php?poll_token='.$poll->token.'&id='.$poll->id.'&prompt='.urlencode($prompt));
} catch (\Exception $e) { } catch (\Exception $e) {
die('Something went wrong creating the poll: "' . $e->getMessage() . '"' . get_page_footer()); quit('Something went wrong creating the poll: "' . $e->getMessage() . '"');
} }
} }
?> ?>

View File

@ -7,22 +7,22 @@ use APnutI\Entities\Poll;
try { try {
echo get_page_header('Post Poll', true, []); echo get_page_header('Post Poll', true, []);
} catch (\Exception $e) { } catch (\Exception $e) {
die('Something went wrong :( "'.$e->getMessage().'"' . get_page_footer()); quit('Something went wrong :( "'.$e->getMessage().'"');
} }
if (!$api->isAuthenticated(false, true)) { if (!$api->isAuthenticated(false, true)) {
die('You need to be logged in to create a new post!' . get_page_footer()); quit('You need to be logged in to create a new post!');
} }
if (!empty($_POST['submit'])) { if (!empty($_POST['submit'])) {
if (empty($_POST['poll_id']) || !is_numeric($_POST['poll_id']) || $_POST['poll_id'] <= 0) { if (empty($_POST['poll_id']) || !is_numeric($_POST['poll_id']) || $_POST['poll_id'] <= 0) {
die('Invalid poll ID'.get_page_footer()); quit('Invalid poll ID');
} }
if (empty($_POST['poll_token'])) { if (empty($_POST['poll_token'])) {
die('Invalid poll token'.get_page_footer()); quit('Invalid poll token');
} }
if (empty($_POST['post_text'])) { if (empty($_POST['post_text'])) {
die('Invalid text'.get_page_footer()); quit('Invalid text');
} }
try { try {
$params = [ $params = [
@ -31,19 +31,19 @@ if (!empty($_POST['submit'])) {
$api->createPostWithParameters($_POST['post_text'], $params); $api->createPostWithParameters($_POST['post_text'], $params);
redirect('view_poll.php?poll_created=1&id=' . $_POST['poll_id']); redirect('view_poll.php?poll_created=1&id=' . $_POST['poll_id']);
} catch (\Exception $e) { } catch (\Exception $e) {
die('Something went wrong creating your post: "' . $e->getMessage() . '"'.get_page_footer()); quit('Something went wrong creating your post: "' . $e->getMessage() . '"');
} }
} }
if (empty($_GET['id']) || !is_numeric($_GET['id']) || $_GET['id'] <= 0) { if (empty($_GET['id']) || !is_numeric($_GET['id']) || $_GET['id'] <= 0) {
die('Invalid poll ID'.get_page_footer()); quit('Invalid poll ID');
} }
if (empty($_GET['poll_token'])) { if (empty($_GET['poll_token'])) {
die('Invalid poll token'.get_page_footer()); quit('Invalid poll token');
} }
if (empty($_GET['prompt'])) { if (empty($_GET['prompt'])) {
die('Invalid prompt'.get_page_footer()); quit('Invalid prompt');
} }
$poll_id = (int)$_GET['id']; $poll_id = (int)$_GET['id'];

View File

@ -186,8 +186,9 @@ datewrapper time {
padding: 0px; padding: 0px;
} }
.success-banner span { .banner span {
font-size: x-large; font-size: x-large;
margin-right: 8px;
} }
/* Poll creation */ /* Poll creation */
@ -269,4 +270,10 @@ footer {
footer .sourcecode svg { footer .sourcecode svg {
stroke-width: 1.5em; stroke-width: 1.5em;
}
/* Other */
form.polltoken-input {
margin-top: 8px;
} }

View File

@ -10,14 +10,16 @@ use APnutI\Exceptions\PollAccessRestrictedException;
use APnutI\Entities\Poll; use APnutI\Entities\Poll;
use APnutI\Entities\User; use APnutI\Entities\User;
$die = null;
try { try {
echo get_page_header('Poll', true, ['poll']); echo get_page_header('Poll', true, ['poll']);
} catch (\Exception $e) { } catch (\Exception $e) {
die('Something went wrong :( "' . $e->getMessage() . '"' . get_page_footer()); quit('Something went wrong :( "' . $e->getMessage());
} }
if (empty($_GET['id']) || !is_numeric($_GET['id']) || $_GET['id'] <= 0) { if (empty($_GET['id']) || !is_numeric($_GET['id']) || $_GET['id'] <= 0) {
die('Invalid poll ID'.get_page_footer()); quit('Invalid poll ID');
} }
$poll_id = (int)$_GET['id']; $poll_id = (int)$_GET['id'];
$poll = null; $poll = null;
@ -26,43 +28,47 @@ try {
$poll_token = array_key_exists('polltoken', $_GET) ? $_GET['polltoken'] : null; $poll_token = array_key_exists('polltoken', $_GET) ? $_GET['polltoken'] : null;
$poll = $api->getPoll($poll_id, $poll_token); $poll = $api->getPoll($poll_id, $poll_token);
} catch (NotFoundException $nfe) { } catch (NotFoundException $nfe) {
die('Poll not found'.get_page_footer()); die('Poll not found');
} catch (NotSupportedPollException $nspe) { } catch (NotSupportedPollException $nspe) {
die('Sorry, this poll has a not yet supported type: ' . $nspe->getMessage() . get_page_footer()); quit('Sorry, this poll has a not yet supported type: ' . $nspe->getMessage());
} catch (PollAccessRestrictedException $are) { } catch (PollAccessRestrictedException $are) {
$message = array_key_exists('polltoken', $_GET) $message_header = array_key_exists('polltoken', $_GET)
? 'Sorry, your poll token is invalid! Please enter a valid token: ' ? 'Sorry, your poll token is invalid! Please enter a valid token: '
: ('Sorry, this poll is private! If you have found this poll on a post, ' : 'Sorry, this poll is private!';
. 'please enter a link to the post, the post ID or the access token for the poll: '); $message_text = array_key_exists('polltoken', $_GET)
die( ? 'Please enter a valid token: '
$message : ('If you have found this poll on a post, '
. '<form><input type="text" name="polltoken">' . 'please enter a link to the post, the post ID or the access token for the poll:');
. '<input type="hidden" name="id" value="'.$poll_id.'"><button type="submit">Access poll</button></form>' $form = '<form class="polltoken-input"><input type="text" name="polltoken">'
. get_page_footer() . '<input type="hidden" name="id" value="'.$poll_id.'"><button type="submit">Access poll</button></form>';
); quit($message_header, $message_text . $form);
} catch (\Exception $e) { } catch (\Exception $e) {
die('Something went wrong :( "'.$e->getMessage().'"' . get_page_footer()); quit('Something went wrong :( "' . $e->getMessage(). '"');
} }
$user_avatar_url = $poll->user->getAvatarUrl(50); try {
$user_avatar_url_srcset = get_source_set($poll->user, 50); $user_avatar_url = $poll->user->getAvatarUrl(50);
$user_avatar_url_srcset = get_source_set($poll->user, 50);
$username = '@' . $poll->user->username; $username = '@' . $poll->user->username;
$disabled = $poll->canVote() ? '' : 'disabled'; $disabled = $poll->canVote() ? '' : 'disabled';
$user_name = $poll->user->name ?? ''; $user_name = $poll->user->name ?? '';
$created_at = $poll->created_at; $created_at = $poll->created_at;
$closed_at = $poll->closed_at; $closed_at = $poll->closed_at;
$user_votes = $poll->getMyVotes(); $user_votes = $poll->getMyVotes();
$votes_remaining = $poll->max_options - count($user_votes); $votes_remaining = $poll->max_options - count($user_votes);
$votes_remaining_plural = $votes_remaining === 1 ? '' : 's'; $votes_remaining_plural = $votes_remaining === 1 ? '' : 's';
$votes_remaining_text = "$votes_remaining Vote$votes_remaining_plural remaining"; $votes_remaining_text = "$votes_remaining Vote$votes_remaining_plural remaining";
$votes_remaining_hidden = $poll->canVote() ? '' : ' hidden'; $votes_remaining_hidden = $poll->canVote() ? '' : ' hidden';
$data_can_vote = $poll->canVote() ? 'true' : 'false'; $data_can_vote = $poll->canVote() ? 'true' : 'false';
$disabled_button = ($poll->canVote() && count($user_votes) > 0) ? '' : 'disabled'; $disabled_button = ($poll->canVote() && count($user_votes) > 0) ? '' : 'disabled';
} catch (\Exception $e) {
quit('Something went wrong :( "' . $e->getMessage(). '"');
}
if (array_key_exists('success', $_GET) && $_GET['success'] == 1) { ?> if (array_key_exists('success', $_GET) && $_GET['success'] == 1) { ?>
<?= make_banner('success', 'Your vote has been saved, thank you!') ?> <?= make_banner('success', 'Your vote has been saved, thank you!') ?>
<?php } <?php }
if (array_key_exists('poll_created', $_GET) && $_GET['poll_created'] == 1) { ?> if (array_key_exists('poll_created', $_GET) && $_GET['poll_created'] == 1) { ?>
<?= make_banner('success', 'Your poll and post have been created, thank you!') ?> <?= make_banner('success', 'Your poll and post have been created, thank you!') ?>

View File

@ -12,11 +12,12 @@ if (is_array($_POST['options'])) {
try { try {
$res = $api->voteInPoll((int)$_POST['pollid'], $voted_options, $_POST['polltoken']); $res = $api->voteInPoll((int)$_POST['pollid'], $voted_options, $_POST['polltoken']);
} catch (\Exception $e) { } catch (\Exception $e) {
get_page_header('Voting error'); $header = get_page_header('Voting error');
$str = 'Sorry, something went wrong while voting! "' $str = $header
. 'Sorry, something went wrong while voting! "'
. $e->getMessage() . $e->getMessage()
. '"<br>Please yell at <a href="https://pnut.io/@hutattedonmyarm">@hutattedonmyarm</a><br>' . '"<br>Please yell at <a href="https://pnut.io/@hutattedonmyarm">@hutattedonmyarm</a><br>'
. '<a href="view_poll.php?id='.$_POST['pollid'].'"s>Go back to the poll</a>'; . '<a href="view_poll.php?id='.$_POST['pollid'].'"s>Go back to the poll</a>';
die($str); quit($str);
} }
redirect('view_poll.php?id='.$_POST['pollid'].'&success=1'); redirect('view_poll.php?id='.$_POST['pollid'].'&success=1');