";
}
/**
* Load the child comments to this comment, and recursively their children.
*/
public function load_children($conn) {
// Prepare new statement for selecting all the child comments.
$stmt = $conn->prepare("SELECT comment_id, poster_id, timestamp,
content FROM blogpost_comments WHERE blogpost_id = :blogpost_id AND
parent_id = :comment_id ORDER BY timestamp ASC;");
// Bind and execute the comment select
$stmt->bindParam(":blogpost_id", $this->blogpost_id);
$stmt->bindParam(":comment_id", $this->comment_id);
$stmt->execute();
// Fetch the comments
$results_arr = $stmt->fetchall(PDO::FETCH_ASSOC);
$comments_arr = [];
// Prepare comment author selection statement
$stmt = $conn->prepare("SELECT username FROM users WHERE
user_id = :user_id;");
// Recursively fetch all the child comments
for($i = 0; $i < count($results_arr); $i++) {
$com = $results_arr[$i];
// If comment has a registered author, fetch their name
if($com["poster_id"]) {
$stmt->bindParam(":user_id", $com["poster_id"]);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
// If user was erased from database, set name to [Deleted]
if(!$result) {
$username = "[Deleted]";
}
else {
$username = $result["username"];
}
}
else {
$username = "[Guest]";
}
$commentObj = new BlogpostComment($com["comment_id"],
$com["poster_id"], $username, $this->blogpost_id,
$this->blogpost_addr, $com["timestamp"], $com["content"],
$this->comment_id);
$comments_arr[] = $commentObj;
$commentObj->load_children($conn);
}
$this->children = $comments_arr;
}
/**
* Constructor for the BlogpostComment object.
* $comment_id GUID of the comment.
* $poster_id GUID of the comment author.
* $poster_name Name of the comment author.
* $blogpost_id GUID of the blogpost this comment is under.
* $blogpost_addr Human-readable address of the blogpost this
comment is under.
* $timestamp Timestamp at comment creation.
* $content Content of the comment.
* $parent_id GUID of the comment this is a reply to (or NULL).
*/
public function __construct($comment_id, $poster_id, $poster_name,
$blogpost_id, $blogpost_address, $timestamp, $content, $parent_id) {
$this->comment_id = $comment_id;
$this->blogpost_id = $blogpost_id;
$this->blogpost_addr = $blogpost_address;
$this->poster_id = $poster_id;
$this->poster_name = $poster_name;
$this->timestamp = $timestamp;
$this->content = $content;
$this->parent_id = $parent_id;
}
}
?>