public function doCreate() { $content = CW::$app->request->post('content'); $updateId = CW::$app->request->post('updateId'); if (empty($content) || empty($updateId)) { return false; } $replyTo = CW::$app->request->post('replyTo'); $result = \models\Comment::create($content, $updateId, CW::$app->user->identity->id, 0 === $replyTo ? null : $replyTo); if ($result) { $result->owner = ['id' => CW::$app->user->identity->id, 'username' => htmlspecialchars(CW::$app->user->identity->username), 'profileUrl' => \models\User::getProfileUrl(CW::$app->user->identity->id), 'pictureUrl' => CW::$app->user->identity->getProfilePicUrl()]; $result->postedAgo = \models\BaseModel::getPostedAgoTime(date("Y-m-d H:i:s", time())); $result->upvotes = 0; $result->replies = $replyTo ? false : []; $result->voted = false; $result->content = htmlspecialchars($result->content); } return json_encode($result); }
/** * * @param array $updates * @return type */ public static function setUpdatePostedFrom(&$updates) { if (!is_array($updates) || 0 === count($updates)) { return; } $users = []; foreach ($updates as &$update) { if (!isset($users[$update['user_id']])) { $users[$update['user_id']] = []; } $users[$update['user_id']][] =& $update; } $userIds = ArrayHelper::keyArray($users); if (0 === count($userIds)) { return; } $stmt = \CW::$app->db->executeQuery('SELECT id, username, profile_img_id FROM users WHERE id IN (' . ArrayHelper::getArrayToString($userIds, ',') . ')'); $result = $stmt->fetchAll(\PDO::FETCH_ASSOC); foreach ($result as $user) { $user['imgUrl'] = \models\User::getProfilePictureUrl($user['profile_img_id'], $user['id']); $user['username'] = htmlspecialchars($user['username']); $user['profileUrl'] = \models\User::getProfileUrl($user['id']); foreach ($users[$user['id']] as &$update) { $update['from'] = $user; } } }
</div> <div style="background-color: #fff; border: 1px solid #ddd; border-top: 0px;"> <div style="padding: 15px;"> <div class="posted-from-c" style="margin: 1px;"> <a href="<?php echo \models\User::getProfileUrl($update['user_id']); ?> "> <img src="<?php echo \models\User::getProfilePictureUrl($update['from']->profile_img_id, $update['from']->id); ?> " class="posted-from-image" width="35" height="35"> </a> <div class="posted-from-info-c"> <a href="<?php echo \models\User::getProfileUrl($update['user_id']); ?> " class="link posted-from-username-link" style="font-weight: bold;"><?php echo htmlspecialchars($update['from']->username); ?> </a> <p class="posted-from-ago"><?php echo $update['postedAgo']; ?> </p> </div> </div> <?php if (!empty($update['tags'])) { ?> <div style="padding: 10px 0px;">
public static function getReplies($replyTo, $last = null) { if (!is_numeric($replyTo) || !is_numeric($replyTo)) { return []; } $result = []; $result['hasMore'] = false; $last = is_numeric($last) ? " AND c.`posted_on` > {$last}" : ''; $query = "SELECT c.*, u.id ownerId, u.username ownerUsername, u.profile_img_id FROM `comments` c JOIN `users` u ON c.`user_id` = u.`id` WHERE c.`reply_to` = {$replyTo} {$last} ORDER BY c.`posted_on` ASC LIMIT 7"; $stmt = \CW::$app->db->executeQuery($query); $replies = $stmt->fetchAll(\PDO::FETCH_OBJ); $repliesCount = count($replies); $last = null; for ($i = 0; $i < $repliesCount; $i++) { $last = $replies[$i]->posted_on; $replies[$i]->postedAgo = BaseModel::getPostedAgoTime($replies[$i]->posted_on); $replies[$i]->content = htmlspecialchars($replies[$i]->content); $replies[$i]->owner = ['id' => $replies[$i]->ownerId, 'username' => htmlspecialchars($replies[$i]->ownerUsername), 'profileUrl' => \models\User::getProfileUrl($replies[$i]->ownerId), 'pictureUrl' => User::getProfilePictureUrl($replies[$i]->profile_img_id, $replies[$i]->ownerId)]; } if (0 < $repliesCount) { $stmt = CW::$app->db->executeQuery("SELECT `reply_to` FROM `comments` WHERE `reply_to` = {$replyTo} AND `posted_on` > '" . $last . "' LIMIT 1"); $_result = $stmt->fetchAll(\PDO::FETCH_ASSOC); if (0 < count($_result)) { $result['hasMore'] = true; } } $result['items'] = $replies; return $result; }