r20151018.1

This commit is contained in:
flash 2015-10-18 18:48:05 +02:00
parent 8284c0d9af
commit b5043980d9
7 changed files with 137 additions and 22 deletions

View file

@ -277,6 +277,25 @@ class Forum
} }
// Get a forum ID from a topic ID
public static function getForumIdFromTopicId($id)
{
// Get the topic
$topic = Database::fetch('topics', false, [
'topic_id' => [$id, '='],
]);
// Return false if nothing was returned
if (empty($topic)) {
return false;
}
// Return the forum id
return $topic['forum_id'];
}
// Get a topic ID from a post ID // Get a topic ID from a post ID
public static function getTopicIdFromPostId($id) public static function getTopicIdFromPostId($id)
{ {
@ -346,8 +365,55 @@ class Forum
} }
// Creating a new post // Creating a new post
public static function createPost($subject, $text, $enableMD, $enableSig, $forum, $type = 0, $status = 0, $topic = 0) public static function createPost($poster, $title, $text, $forum, $topic = 0, $parse = 0, $signature = 0, $emotes = 0, $type = 0, $status = 0)
{ {
// Check if we're replying to a thread
$getThread = Database::fetch('topics', false, ['topic_id' => [$topic, '=']]);
// If nothing was returned create a new thread
if (!$getThread) {
// Insert the required data
Database::insert('topics', [
'forum_id' => $forum,
'topic_title' => $title,
'topic_time' => time(),
'topic_status' => $status,
'topic_type' => $type,
]);
// Fetch the last insert
$getThread = Database::fetch('topics', false, null, ['topic_id', true]);
}
// Insert the post
Database::insert('posts', [
'topic_id' => $getThread['topic_id'],
'forum_id' => $getThread['forum_id'],
'poster_id' => $poster,
'post_time' => time(),
'post_parse' => $parse,
'post_signature' => $signature,
'post_emotes' => $emotes,
'post_subject' => $title,
'post_text' => $text,
]);
// Fetch the last insert
$getPost = Database::fetch('posts', false, null, ['post_id', true]);
// Update the topic with the last details
Database::update('topics', [
[
'topic_last_reply' => time(),
],
[
'topic_id' => [$getPost['topic_id'], '='],
],
]);
// Return success
return [1, 'SUCCESS', $getPost['forum_id'], $getPost['topic_id'], $getPost['post_id']];
} }
} }

View file

@ -29,7 +29,7 @@
<td class="forumLastColumn"> <td class="forumLastColumn">
<div> <div>
{% if forum.last_post.post_id %} {% if forum.last_post.post_id %}
<a href="{{ urls.format('FORUM_THREAD', [forum.last_post.topic_id]) }}" class="default">{{ forum.last_post.post_subject }}</a><br /><span title="{{ forum.last_post.post_time|date(sakura.dateFormat) }}">{{ forum.last_post.elapsed }}</span> by {% if forum.last_poster.data.user_id %}<a href="{{ urls.format('USER_PROFILE', [forum.last_poster.data.user_id]) }}" class="default" style="color: {{ forum.last_poster.colour }}; text-shadow: 0 0 5px {% if forum.last_poster.colour != 'inherit' %}{{ forum.last_poster.colour }}{% else %}#222{% endif %};">{{ forum.last_poster.data.username }}</a>{% else %}[deleted user]{% endif %} <a href="{{ urls.format('FORUM_POST', [forum.last_poster.post.post_id]) }}#p{{ forum.last_poster.post.post_id }}" class="default fa fa-tag"></a> <a href="{{ urls.format('FORUM_THREAD', [forum.last_post.topic_id]) }}" class="default">{{ forum.last_post.post_subject }}</a><br /><span title="{{ forum.last_post.post_time|date(sakura.dateFormat) }}">{{ forum.last_post.elapsed }}</span> by {% if forum.last_poster.data.user_id %}<a href="{{ urls.format('USER_PROFILE', [forum.last_poster.data.user_id]) }}" class="default" style="color: {{ forum.last_poster.colour }}; text-shadow: 0 0 5px {% if forum.last_poster.colour != 'inherit' %}{{ forum.last_poster.colour }}{% else %}#222{% endif %};">{{ forum.last_poster.data.username }}</a>{% else %}[deleted user]{% endif %} <a href="{{ urls.format('FORUM_POST', [forum.last_post.post.post_id]) }}#p{{ forum.last_poster.post.post_id }}" class="default fa fa-tag"></a>
{% else %} {% else %}
There are no posts in this forum.<br />&nbsp; There are no posts in this forum.<br />&nbsp;
{% endif %} {% endif %}

View file

@ -5,7 +5,7 @@
{% block content %} {% block content %}
<div class="content"> <div class="content">
<div class="content-column forum posting"> <div class="content-column forum posting">
<form method="post" action="{{ sakura.currentPage }}"> <form id="forumPostingForm" method="post" action="{{ sakura.currentPage }}">
<div class="head">Forum / Posting</div> <div class="head">Forum / Posting</div>
<div class="posting-subject"> <div class="posting-subject">
<input type="text" class="inputStyling" name="subject" placeholder="Subject" /> <input type="text" class="inputStyling" name="subject" placeholder="Subject" />
@ -44,21 +44,26 @@
</div> </div>
<div> <div>
<label for="parseMode">Parsing Mode:</label> <label for="parseMode">Parsing Mode:</label>
<select> <select id="parseMode" name="parseMode">
<option>None</option> <option value="0">None</option>
<option selected="selected">BBCodes</option> <option value="1" selected="selected">BBCodes</option>
<option>Markdown</option> <option value="2">Markdown</option>
</select> </select>
</div> </div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<hr class="default" /> <hr class="default" />
<div class="posting-buttons"> <div class="posting-buttons">
<input class="inputStyling" type="submit" name="preview" value="Preview" /> <input class="inputStyling" type="submit" name="preview" value="Preview" disabled="disabled" />
<input class="inputStyling" type="submit" name="post" value="Post" /> <input class="inputStyling" type="submit" name="post" value="Post" />
<input class="inputStyling" type="submit" name="cancel" value="Cancel" /> <input class="inputStyling" type="button" onclick="history.go(-1);" value="Cancel" />
</div> </div>
</form> </form>
</div> </div>
</div> </div>
<script type="text/javascript">
window.addEventListener("load", function() {
prepareAjaxForm('forumPostingForm', 'Making post...');
});
</script>
{% endblock %} {% endblock %}

View file

@ -54,8 +54,6 @@
</form> </form>
<script type="text/javascript"> <script type="text/javascript">
window.addEventListener("load", function() { window.addEventListener("load", function() {
prepareAjaxForm('editProfileForm', 'Updating Profile...'); prepareAjaxForm('editProfileForm', 'Updating Profile...');
}); });
</script> </script>

View file

@ -281,7 +281,6 @@ if (isset($_REQUEST['mode'])) {
) : ) :
Templates::render('global/information.tpl', $renderData); Templates::render('global/information.tpl', $renderData);
exit; exit;
} }
// Add page specific things // Add page specific things

View file

@ -1704,6 +1704,15 @@ button.inputStyling:active {
transition: text-shadow .2s, box-shadow .2s; transition: text-shadow .2s, box-shadow .2s;
} }
input[type="submit"][disabled=disabled].inputStyling,
input[type="button"][disabled=disabled].inputStyling,
input[type="reset"][disabled=disabled].inputStyling,
button[disabled=disabled].inputStyling {
background: linear-gradient(180deg, #858585 0%, #858585 50%, #787878 50%) #858585 !important;
box-shadow: inset #222 0 0 1px !important;
text-shadow: #888 0 0 2px !important;
}
input[type="text"].inputStyling, input[type="text"].inputStyling,
input[type="password"].inputStyling, input[type="password"].inputStyling,
input[type="date"].inputStyling, input[type="date"].inputStyling,

View file

@ -10,18 +10,56 @@ namespace Sakura;
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php';
// Set location // Set location
$locId = isset($_GET['f']) ? $topicId = isset($_GET['t']) ?
$_GET['f'] : $_GET['t'] :
( (
isset($_GET['t']) ? isset($_GET['p']) ?
$_GET['t'] : Forum::getTopicIdFromPostId($_GET['p']) :
( 0
isset($_GET['p']) ?
Forum::getTopicIdFromPostId($_GET['p']) :
0
)
); );
$locMode = isset($_GET['f']) ? 'f' : (isset($_GET['t']) || isset($_GET['p']) ? 't' : null);
$forumId = isset($_GET['f']) ?
$_GET['f'] :
Forum::getForumIdFromTopicId($topicId);
$mode = isset($_GET['f']) ? 'f' : (isset($_GET['t']) || isset($_GET['p']) ? 't' : null);
// Check if a post is being made
if (isset($_POST['post'])) {
// Set post mode
switch($_POST['parseMode']) {
case '1':
$parse = '1';
break;
case '2':
$parse = '2';
break;
default:
$parse = '0';
}
// Attempt to make the post
$makePost = Forum::createPost($currentUser->data['user_id'], $_POST['subject'], $_POST['text'], $forumId, $topicId, $parse);
// Add page specific things
$renderData['page'] = [
'redirect' => $urls->format('FORUM_THREAD', [$makePost[3]]),
'message' => 'Made the post!',
'success' => $makePost[0],
];
// Print page contents or if the AJAX request is set only display the render data
print isset($_REQUEST['ajax']) ?
(
$renderData['page']['message'] . '|' .
$renderData['page']['success'] . '|' .
$renderData['page']['redirect']
) :
Templates::render('global/information.tpl', $renderData);
exit;
}
// Set additional render data // Set additional render data
$renderData = array_merge($renderData, [ $renderData = array_merge($renderData, [