6 public function __construct()
8 require __DIR__ . '/../../data/config.php';
9 $this->db = new \PDO($dbdsn, $dbuser, $dbpass);
10 $this->db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
14 * Store a new comment into the database
16 * @param object $json Micropub create JSON
17 * @param integer $userId ID of the user whom this comment belongs
19 * @return integer Comment ID
22 public function addComment($json, $userId)
24 $stmt = $this->db->prepare(
25 'INSERT INTO comments SET'
26 . ' comment_user_id = :userId'
27 . ', comment_published = NOW()'
28 . ', comment_of_url = :ofUrl'
29 . ', comment_type = :type'
30 . ', comment_json = :json'
34 if (isset($json->properties->{'in-reply-to'})) {
35 $ofUrl = reset($json->properties->{'in-reply-to'});
41 ':type' => reset($json->type),
42 ':json' => json_encode($json),
45 return $this->db->lastInsertId();
49 * @return null|object NULL if not found, comment object otherwise
51 public function getComment($id)
53 $stmt = $this->db->prepare(
54 'SELECT * FROM comments WHERE comment_id = ?'
56 $stmt->execute([$id]);
57 $row = $stmt->fetchObject();
63 $json = json_decode($row->comment_json);
67 $stmt = $this->db->prepare(
68 'SELECT * FROM users WHERE user_id = ?'
70 $stmt->execute([$row->comment_user_id]);
71 $rowUser = $stmt->fetchObject();
72 if ($rowUser === false) {
73 $rowUser = (object) array(
75 'user_name' => 'Anonymous',
76 'user_imageurl' => '',
80 $json->user = $rowUser;
85 * @return null|object NULL if not found, user database row otherwise
87 public function getUser($id)
89 $stmt = $this->db->prepare(
90 'SELECT * FROM users WHERE user_id = ?'
92 $stmt->execute([$id]);
93 $row = $stmt->fetchObject();
101 public function findUser($name, $imageurl)
103 $stmt = $this->db->prepare(
104 'SELECT user_id FROM users'
105 . ' WHERE user_name = ? AND user_imageurl = ?'
107 $stmt->execute([$name, $imageurl]);
108 $row = $stmt->fetchObject();
110 if ($row === false) {
113 return $row->user_id;
116 public function createUser($name, $imageurl)
118 $stmt = $this->db->prepare(
119 'INSERT INTO users SET'
120 . ' user_name = :name'
121 . ', user_imageurl = :imageurl'
126 ':imageurl' => $imageurl,
129 return $this->db->lastInsertId();