You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.6 KiB
PHP

<?php
/*
* Box 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 ForumPost extends CPHPDatabaseRecordClass
{
public $table_name = "forum_posts";
public $fill_query = "SELECT * FROM forum_posts WHERE `Id` = :Id";
public $verify_query = "SELECT * FROM forum_posts WHERE `Id` = :Id";
public $prototype = array(
'none' => array(
'Body' => "Body"
),
'numeric' => array(
'AuthorId' => "AuthorId",
'ThreadId' => "ThreadId",
'Revision' => "Revision"
),
'boolean' => array(
"Visible" => "Visible",
"LatestRevision" => "LatestRevision"
),
'timestamp' => array(
"PostedDate" => "PostedDate",
"LastEditedDate" => "LastEditedDate",
"EditExpiry" => "EditExpiry"
),
'user' => array(
'Author' => "AuthorId"
),
'forumthread' => array(
"Thread" => "ThreadId"
)
);
public function GetPermalink()
{
return "/forums/post/{$this->sId}/{$this->sThread->sSlug}";
}
public function GetPage()
{
global $database;
/* How many posts before this post in the thread? */
$result = $database->CachedQuery("SELECT COUNT(*) FROM forum_posts WHERE `ThreadId` = :ThreadId AND `Id` < :Id",
array(":ThreadId" => $this->sThreadId, ":Id" => $this->sId));
$total_posts = $result->data[0]["COUNT(*)"];
return ($total_posts == 0) ? 1 : ceil(($total_posts + 1) / 30);
}
public function GetThanks()
{
return ForumThanks::CreateFromQuery("SELECT * FROM forum_thanks WHERE `PostId` = :PostId", array(":PostId" => $this->sId), 20);
}
public function Thank($user_id)
{
try
{
ForumThanks::CreateFromQuery("SELECT * FROM forum_thanks WHERE `PostId` = :PostId AND `UserId` = :UserId", array(
":PostId" => $this->sId, ":UserId" => $user_id), 0);
}
catch (NotFoundException $e)
{
$sThanks = new ForumThanks(0);
$sThanks->uPostId = $this->sId;
$sThanks->uUserId = $user_id;
$sThanks->uDate = time();
$sThanks->InsertIntoDatabase();
}
}
public function Flag($user_id, $reason)
{
$sFlag = new ForumFlag(0);
$sFlag->uPostId = $this->sId;
$sFlag->uUserId = $user_id;
$sFlag->uFlagDate = time();
$sFlag->uReason = $reason;
$sFlag->InsertIntoDatabase();
}
}