예제 #1
0
function render_firehose_page($numposts = 20, $page = 1)
{
    $start = (intval($page) - 1) * $numposts;
    $html = render_header("The Firehose");
    $html .= "<div class=\"bg_menu_wrapper\">\n" . "<ul class=\"bg_menu\">\n" . "<li class=\"selected\"><a href=\"/explore/firehose\" title=\"Firehose\">Firehose</a></li>\n" . "<li><a href=\"/explore/popular\" title=\"Popular\">Popular</a></li>\n" . "<li><a href=\"/explore/tags\" title=\"Tags\">Tags</a></li>\n" . "<li><a href=\"/explore/directory\" title=\"Directory\">Directory</a></li>\n" . "<li><a href=\"/explore/suggested\" title=\"Suggested Users\">Suggested</a></li>\n" . "<li><a href=\"/explore/search\" title=\"Search\">Search</a></li>\n" . "</ul>\n" . "<div class=\"clear\"></div>\n" . "</div>\n";
    $mysqli = db_connect();
    $sql = "";
    $count_sql = "";
    if (isset($_SESSION["user_id"])) {
        $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar,Likes.Id AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " LEFT OUTER JOIN Likes ON Likes.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Likes.PostId=Posts.Id" . " LEFT OUTER JOIN Friends FriendsOfAuthor ON Posts.UserId=FriendsOfAuthor.UserId AND FriendsOfAuthor.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " WHERE" . " ((FriendsOfAuthor.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Privacy=" . POST_PRIVACY_FRIENDS_ONLY . ")" . " OR" . " (Posts.Privacy=" . POST_PRIVACY_PUBLIC . ")" . " OR" . " (Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . "))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " ORDER BY Created DESC LIMIT " . $mysqli->real_escape_string($start) . "," . $mysqli->real_escape_string($numposts);
        $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " LEFT OUTER JOIN Friends FriendsOfAuthor ON Posts.UserId=FriendsOfAuthor.UserId AND FriendsOfAuthor.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " WHERE" . " ((FriendsOfAuthor.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Privacy=" . POST_PRIVACY_FRIENDS_ONLY . ")" . " OR" . " (Posts.Privacy=" . POST_PRIVACY_PUBLIC . ")" . " OR" . " (Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . "))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED;
    } else {
        $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar, null AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " WHERE" . " Posts.Privacy=" . POST_PRIVACY_PUBLIC . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " ORDER BY Created DESC LIMIT " . $mysqli->real_escape_string($start) . "," . $mysqli->real_escape_string($numposts);
        $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " WHERE" . " Posts.Privacy=" . POST_PRIVACY_PUBLIC . " AND Posts.Status=" . POST_STATUS_PUBLISHED;
    }
    // fetch count for pagination
    $count_result = $mysqli->query($sql_count);
    $count_row = $count_result->fetch_assoc();
    $count = $count_row["NumPosts"];
    $post_result = $mysqli->query($sql);
    $html .= "<div id=\"header\">\n" . "<h1>The Firehose</h1>\n" . "<p>Everything posted by everybody, across the entire site (well... everything they are choosing to let you see...)</p>\n" . "</div>";
    $html .= render_posts($mysqli, $post_result);
    /*
    $html .= "<div class=\"tiles\">\n";
    while ($post_row =@ $post_result->fetch_assoc()){
    	$html .= render_tile($mysqli,$post_row,false);
    }
    $html .= "</div> <!-- .tiles -->\n";
    */
    // Pagination
    $html .= render_pagination("explore/firehose/" . $numposts, $page, $count, $numposts);
    $html .= render_display_controls();
    $html .= render_footer();
    return $html;
}
예제 #2
0
function render_tag_page($tag_name, $page)
{
    $start = (intval($page) - 1) * 20;
    $html = render_header($tag_name, "", true);
    $html .= "<div class=\"bg_menu_wrapper\">\n" . "<ul class=\"bg_menu\">\n" . "<li><a href=\"/explore/firehose\" title=\"Firehose\">Firehose</a></li>\n" . "<li><a href=\"/explore/popular\" title=\"Popular\">Popular</a></li>\n" . "<li class=\"selected\"><a href=\"/explore/tags\" title=\"Tags\">Tags</a></li>\n" . "<li><a href=\"/explore/directory\" title=\"Directory\">Directory</a></li>\n" . "<li><a href=\"/explore/suggested\" title=\"Suggested Users\">Suggested</a></li>\n" . "<li><a href=\"/explore/search\" title=\"Search\">Search</a></li>\n" . "</ul>\n" . "<div class=\"clear\"></div>\n" . "</div>\n";
    $mysqli = db_connect();
    $sql = "";
    $sql_count = "";
    if (isset($_SESSION["user_id"])) {
        $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar,Likes.Id AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " INNER JOIN PostTags ON Posts.Id=PostTags.PostId" . " INNER JOIN Tags ON PostTags.TagId=Tags.Id" . " LEFT OUTER JOIN Likes ON Likes.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Likes.PostId=Posts.Id" . " LEFT OUTER JOIN Friends FriendsA ON Posts.UserId=FriendsA.UserId" . " WHERE" . " ((FriendsA.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Privacy=" . POST_PRIVACY_FRIENDS_ONLY . ")" . " OR" . " (Posts.Privacy=" . POST_PRIVACY_PUBLIC . ")" . " OR" . " (Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . "))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND Tags.Name='" . $mysqli->real_escape_string($tag_name) . "'" . " ORDER BY Created DESC LIMIT " . $mysqli->real_escape_string($start) . ",20";
        $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " INNER JOIN PostTags ON Posts.Id=PostTags.PostId" . " INNER JOIN Tags ON PostTags.TagId=Tags.Id" . " LEFT OUTER JOIN Friends FriendsA ON Posts.UserId=FriendsA.UserId" . " WHERE" . " ((FriendsA.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Privacy=" . POST_PRIVACY_FRIENDS_ONLY . ")" . " OR" . " (Posts.Privacy=" . POST_PRIVACY_PUBLIC . ")" . " OR" . " (Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . "))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND Tags.Name='" . $mysqli->real_escape_string($tag_name) . "'";
    } else {
        $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " INNER JOIN PostTags ON Posts.Id=PostTags.PostId" . " INNER JOIN Tags ON PostTags.TagId=Tags.Id" . " WHERE" . " Posts.Privacy=" . POST_PRIVACY_PUBLIC . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND Tags.Name='" . $mysqli->real_escape_string($tag_name) . "'" . " ORDER BY Created DESC LIMIT " . $mysqli->real_escape_string($start) . ",20";
        $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " INNER JOIN PostTags ON Posts.Id=PostTags.PostId" . " INNER JOIN Tags ON PostTags.TagId=Tags.Id" . " WHERE" . " Posts.Privacy=" . POST_PRIVACY_PUBLIC . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND Tags.Name='" . $mysqli->real_escape_string($tag_name) . "'";
    }
    // fetch count for pagination
    $count_result = $mysqli->query($sql_count);
    $count_row = $count_result->fetch_assoc();
    $count = $count_row["NumPosts"];
    $post_result = $mysqli->query($sql);
    $html .= "<div id=\"header\"><h1>Posts tagged &#8216;<span>" . $tag_name . "</span>&#8217;</h1></div>\n";
    $html .= render_posts($mysqli, $post_result);
    $html .= render_pagination("explore/tag/" . $tag_name, $page, $count, 20);
    $html .= render_display_controls();
    $html .= render_footer();
    return $html;
}
예제 #3
0
function render_popular_page($page)
{
    $start = (intval($page) - 1) * 20;
    $html = render_header("Popular Posts");
    $html .= "<div class=\"bg_menu_wrapper\">\n" . "<ul class=\"bg_menu\">\n" . "<li><a href=\"/explore/firehose\" title=\"Firehose\">Firehose</a></li>\n" . "<li class=\"selected\"><a href=\"/explore/popular\" title=\"Popular\">Popular</a></li>\n" . "<li><a href=\"/explore/tags\" title=\"Tags\">Tags</a></li>\n" . "<li><a href=\"/explore/directory\" title=\"Directory\">Directory</a></li>\n" . "<li><a href=\"/explore/suggested\" title=\"Suggested Users\">Suggested</a></li>\n" . "<li><a href=\"/explore/search\" title=\"Search\">Search</a></li>\n" . "</ul>\n" . "<div class=\"clear\"></div>\n" . "</div>\n";
    $mysqli = db_connect();
    if (isset($_SESSION["user_id"])) {
        $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar,Likes.Id AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " LEFT OUTER JOIN Likes ON Likes.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Likes.PostId=Posts.Id" . " LEFT OUTER JOIN Friends FriendsA ON Posts.UserId=FriendsA.UserId" . " WHERE" . " ((FriendsA.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Privacy=" . POST_PRIVACY_FRIENDS_ONLY . ")" . " OR" . " (Posts.Privacy=" . POST_PRIVACY_PUBLIC . ")" . " OR" . " (Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . "))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND (Posts.Created > (CURRENT_TIMESTAMP - INTERVAL '1' DAY))" . " ORDER BY (Posts.Likes + Posts.Comments) DESC LIMIT " . $mysqli->real_escape_string($start) . ",20";
        $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " LEFT OUTER JOIN Friends FriendsA ON Posts.UserId=FriendsA.UserId" . " WHERE" . " ((FriendsA.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Privacy=" . POST_PRIVACY_FRIENDS_ONLY . ")" . " OR" . " (Posts.Privacy=" . POST_PRIVACY_PUBLIC . ")" . " OR" . " (Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . "))" . " AND (Posts.Created > (CURRENT_TIMESTAMP - INTERVAL '1' DAY))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED;
    } else {
        $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar, null AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " WHERE" . " Posts.Privacy=" . POST_PRIVACY_PUBLIC . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND (Posts.Created > (CURRENT_TIMESTAMP - INTERVAL '1' DAY))" . " ORDER BY (Posts.Likes + Posts.Comments) DESC LIMIT " . $mysqli->real_escape_string($start) . ",20";
        $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " WHERE" . " Posts.Privacy=" . POST_PRIVACY_PUBLIC . " AND (Posts.Created > (CURRENT_TIMESTAMP - INTERVAL '1' DAY))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED;
    }
    // fetch count for pagination
    $count_result = $mysqli->query($sql_count);
    $count_row = $count_result->fetch_assoc();
    $count = $count_row["NumPosts"];
    $post_result = $mysqli->query($sql);
    $html .= "<div id=\"header\">\n" . "<h1>Popular Posts</h1>\n" . "<p>The most popular content available to you of the last 24 hours, judged by comments and likes...</p>\n" . "</div>";
    $html .= render_posts($mysqli, $post_result);
    $html .= render_pagination("explore/popular", $page, $count, 20);
    $html .= render_display_controls();
    $html .= render_footer();
    return $html;
}
예제 #4
0
function render_suggested_users($days = 7, $page = 1)
{
    $start = (intval($page) - 1) * 20;
    $html = render_header("Suggested Users");
    $html .= "<div class=\"bg_menu_wrapper\">\n" . "<ul class=\"bg_menu\">\n" . "<li><a href=\"/explore/firehose\" title=\"Firehose\">Firehose</a></li>\n" . "<li><a href=\"/explore/popular\" title=\"Popular\">Popular</a></li>\n" . "<li><a href=\"/explore/tags\" title=\"Tags\">Tags</a></li>\n" . "<li><a href=\"/explore/directory\" title=\"Directory\">Directory</a></li>\n" . "<li class=\"selected\"><a href=\"/explore/suggested\" title=\"Suggested Users\">Suggested</a></li>\n" . "<li><a href=\"/explore/search\" title=\"Search\">Search</a></li>\n" . "</ul>\n" . "<div class=\"clear\"></div>\n" . "</div>\n";
    $mysqli = db_connect();
    $html .= "<div id=\"header\">\n" . "<h1>Suggested Users</h1>\n" . "<p>Users with the most popular public content over the last " . $days . " days.</p>\n" . "</div>\n";
    $sql = "SELECT Users.*, COUNT(DISTINCT Posts.Id) AS PostCount, COUNT(DISTINCT Comments.Id) AS CommentCount, COUNT(DISTINCT Likes.Id) AS LikesCount, COUNT(DISTINCT Posts.Id) + COUNT(DISTINCT Comments.Id) + COUNT(DISTINCT Likes.Id) AS TotalCount\n" . " FROM Users" . " INNER JOIN Posts ON Posts.UserId=Users.Id AND Posts.Status=1 AND Posts.Privacy=0" . " LEFT OUTER JOIN Comments ON Posts.Id=Comments.PostId AND Comments.UserId<>Users.Id" . " LEFT OUTER JOIN Likes ON Posts.Id=Likes.PostId AND Likes.UserId<>Users.Id" . " WHERE Posts.Created > (CURRENT_TIMESTAMP - INTERVAL '" . $mysqli->real_escape_string($days) . "' DAY)" . " GROUP BY Users.Id" . " ORDER BY TotalCount DESC" . " LIMIT " . $mysqli->real_escape_string($start) . ",20";
    $sql_count = "SELECT COUNT(DISTINCT Users.Id) AS NumUsers" . " FROM Users" . " INNER JOIN Posts ON Posts.UserId=Users.Id AND Posts.Status=1 AND Posts.Privacy=0" . " WHERE (Posts.Created > (CURRENT_TIMESTAMP - INTERVAL '" . $mysqli->real_escape_string($days) . "' DAY))";
    $user_result = $mysqli->query($sql);
    if ($user_result->num_rows > 0) {
        $html .= "<div class=\"directory_users\">\n";
        while ($user_row = @$user_result->fetch_assoc()) {
            $html .= render_user($user_row);
        }
        $html .= "<div class=\"clear\"></div>\n" . "</div>\n";
    }
    // fetch count for pagination
    $count_result = $mysqli->query($sql_count);
    $count_row = $count_result->fetch_assoc();
    $count = $count_row["NumUsers"];
    $html .= render_pagination("explore/suggested/" . $days, $page, $count, 20);
    $html .= render_footer();
    return $html;
}
예제 #5
0
function render_search_page($search_terms = "", $page = 1)
{
    $start = (intval($page) - 1) * 20;
    $html = render_header("Search");
    $html .= "<div class=\"bg_menu_wrapper\">\n" . "<ul class=\"bg_menu\">\n" . "<li><a href=\"/explore/firehose\" title=\"Firehose\">Firehose</a></li>\n" . "<li><a href=\"/explore/popular\" title=\"Popular\">Popular</a></li>\n" . "<li><a href=\"/explore/tags\" title=\"Tags\">Tags</a></li>\n" . "<li><a href=\"/explore/directory\" title=\"Directory\">Directory</a></li>\n" . "<li><a href=\"/explore/suggested\" title=\"Suggested Users\">Suggested</a></li>\n" . "<li class=\"selected\"><a href=\"/explore/search\" title=\"Search\">Search</a></li>\n" . "</ul>\n" . "<div class=\"clear\"></div>\n" . "</div>\n";
    $html .= "<div id=\"header\">\n" . "<h1>Search</h1>\n" . "<p>Search the title and body of posts.</p>\n" . "<table id=\"search_form\" cellspacing=\"0\" cellpadding=\"5\"><tr>\n" . "<td><input type=\"text\" name=\"s\" id=\"search_text\" value=\"" . addslashes(urldecode($search_terms)) . "\" size=\"20\" onKeyPress=\"return checkSubmit(event)\"/></td>\n" . "<td><button id='search_submit_button' onClick=\"document.location.href = '/explore/search/' + \$('#search_text').val();\">Go</button></td>\n" . "</tr></table>";
    $html .= "<script>\n" . "\$(\"#search_text\").focus();\n" . "</script>\n";
    if ($search_terms != "") {
        $mysqli = db_connect();
        $sql = "";
        $count_sql = "";
        if (isset($_SESSION["user_id"])) {
            $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar,Likes.Id AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " LEFT OUTER JOIN Likes ON Likes.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Likes.PostId=Posts.Id" . " LEFT OUTER JOIN Friends FriendsA ON Posts.UserId=FriendsA.UserId" . " WHERE" . " ((FriendsA.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Privacy=" . POST_PRIVACY_FRIENDS_ONLY . ")" . " OR" . " (Posts.Privacy=" . POST_PRIVACY_PUBLIC . ")" . " OR" . " (Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . "))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND MATCH(Posts.Title, Posts.Body) AGAINST ('" . $mysqli->real_escape_string($search_terms) . "')" . " ORDER BY MATCH(Posts.Title, Posts.Body) AGAINST ('" . $mysqli->real_escape_string($search_terms) . "') DESC LIMIT " . $mysqli->real_escape_string($start) . ",20";
            $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " LEFT OUTER JOIN Friends FriendsA ON Posts.UserId=FriendsA.UserId" . " WHERE" . " ((FriendsA.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Privacy=" . POST_PRIVACY_FRIENDS_ONLY . ")" . " OR" . " (Posts.Privacy=" . POST_PRIVACY_PUBLIC . ")" . " OR" . " (Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . "))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND MATCH(Posts.Title, Posts.Body) AGAINST ('" . $mysqli->real_escape_string($search_terms) . "')";
        } else {
            $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar, null AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " WHERE" . " Posts.Privacy=" . POST_PRIVACY_PUBLIC . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND MATCH(Posts.Title, Posts.Body) AGAINST ('" . $mysqli->real_escape_string($search_terms) . "')" . " ORDER BY MATCH(Posts.Title, Posts.Body) AGAINST ('" . $mysqli->real_escape_string($search_terms) . "') DESC LIMIT " . $mysqli->real_escape_string($start) . ",20";
            $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " WHERE" . " Posts.Privacy=" . POST_PRIVACY_PUBLIC . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND MATCH(Posts.Title, Posts.Body) AGAINST ('" . $mysqli->real_escape_string($search_terms) . "')";
        }
        // fetch count for pagination
        $count_result = $mysqli->query($sql_count);
        $count_row = $count_result->fetch_assoc();
        $count = $count_row["NumPosts"];
        $post_result = $mysqli->query($sql);
        $html .= "<p>" . $count . " posts found with '" . $search_terms . "' in the title, or body...</p>\n" . "</div> <!-- #header -->\n";
        $html .= render_posts($mysqli, $post_result);
        // Pagination
        $html .= render_pagination("explore/search/" . $search_terms, $page, $count, 20);
        $html .= render_display_controls();
    } else {
        $html .= "</div> <!-- #header -->\n";
    }
    $html .= render_footer();
    return $html;
}
예제 #6
0
function render_user_directory($tag_name = "", $page = 1)
{
    $start = (intval($page) - 1) * 20;
    $html = render_header("User Directory");
    $mysqli = db_connect();
    // check if a tag is passed in
    if ($tag_name == "") {
        // No tag - draw the tags
        $sql = "SELECT Tags.Name AS TagName, COUNT(Tags.Id) AS TagCount" . " FROM Tags" . " INNER JOIN UserTags ON Tags.Id=UserTags.TagId" . " INNER JOIN Users ON UserTags.UserId=Users.Id" . " GROUP BY Tags.Name" . " ORDER BY Tags.Name";
        // ." HAVING COUNT(Tags.Id)>1" - goes above ORDER BY
        $html .= "<div id=\"header\">\n" . "<h1>User Directory</h1>\n" . "<p>Explore the tags users have filed themselves under - edit your <a href=\"/account\">account</a> details to file yourself under some tags.</p>\n" . "</div>\n";
        $tags_result_a = $mysqli->query($sql);
        $tags_result_b = $mysqli->query($sql);
        // find the most tags to do sizing
        $max_tags = 0;
        while ($tags_row = @$tags_result_a->fetch_assoc()) {
            if (intval($tags_row["TagCount"]) > $max_tags) {
                $max_tags = intval($tags_row["TagCount"]);
            }
        }
        $range = 2;
        $html .= "<div id='tags_page'>\n" . "<div class=\"tags\">\n";
        while ($tags_row = @$tags_result_b->fetch_assoc()) {
            // math to work out size of font
            $tag_count = $tags_row["TagCount"];
            $ratio = $tag_count / $max_tags;
            $size = number_format(1 + $ratio * $range, 1);
            $html .= "<div class='tag' style='font-size:" . $size . "em !important;'><a title='" . addslashes($tags_row["TagName"]) . "' href='/directory/" . htmlspecialchars($tags_row["TagName"]) . "'>" . str_replace(" ", "&nbsp;", $tags_row["TagName"]) . "</a><br /><small>" . $tags_row["TagCount"] . " users</small></div>\n";
        }
        $html .= "<div class='clear'></div>\n" . "</div> <!-- .tags -->\n" . "</div> <!-- #tags_page -->\n";
    } else {
        $html .= "<div id=\"header\">\n" . "<h1>User Directory : &#8216;<span>" . $tag_name . "</span>&#8217;</h1>\n" . "<p>Here are the users that have filed themselves under the tag '" . $tag_name . "'</p>\n" . "</div>\n";
        // get all the users with a particular tag
        $sql = "SELECT Users.*, COUNT(DISTINCT Posts.Id) AS PostCount, COUNT(DISTINCT Comments.Id) AS CommentCount, COUNT(DISTINCT Likes.Id) AS LikesCount,COUNT(DISTINCT Posts.Id) + COUNT(DISTINCT Comments.Id) + COUNT(DISTINCT Likes.Id) AS TotalCount\n" . " FROM Users" . " INNER JOIN UserTags ON Users.Id=UserTags.UserId" . " INNER JOIN Tags ON Tags.Id=UserTags.TagId" . " LEFT OUTER JOIN Posts ON Posts.UserId=Users.Id AND Posts.Status=1 AND Posts.Privacy=0" . " LEFT OUTER JOIN Comments ON Posts.Id=Comments.PostId AND Comments.UserId<>Users.Id" . " LEFT OUTER JOIN Likes ON Posts.Id=Likes.PostId AND Likes.UserId<>Users.Id" . " WHERE Tags.Name='" . $mysqli->real_escape_string($tag_name) . "'" . " GROUP BY Users.Id" . " ORDER BY TotalCount DESC" . " LIMIT " . $mysqli->real_escape_string($start) . ",20";
        $sql_count = "SELECT COUNT(DISTINCT Users.Id) AS NumUsers" . " FROM Users" . " INNER JOIN UserTags ON Users.Id=UserTags.UserId" . " INNER JOIN Tags ON Tags.Id=UserTags.TagId" . " INNER JOIN Posts ON Posts.UserId=Users.Id AND Posts.Status=1 AND Posts.Privacy=0" . " LEFT OUTER JOIN Comments ON Posts.Id=Comments.PostId" . " LEFT OUTER JOIN Likes ON Posts.Id=Likes.PostId" . " WHERE Tags.Name='" . $mysqli->real_escape_string($tag_name) . "'" . " GROUP BY Users.Id";
        $user_result = $mysqli->query($sql);
        if ($user_result->num_rows > 0) {
            $html .= "<div class=\"directory_users\">\n";
            while ($user_row = @$user_result->fetch_assoc()) {
                $html .= render_user($user_row);
            }
            $html .= "</div>\n";
        } else {
            $html .= "<p>There are no users filed under the tag '" . $tag_name . "'</p>\n";
        }
        // fetch count for pagination
        $count_result = $mysqli->query($sql_count);
        $count_row = $count_result->fetch_assoc();
        $count = $count_row["NumUsers"];
        $html .= render_pagination("user_directory/" . $tag_name, $page, $count, 20);
    }
    $html .= render_footer();
    return $html;
}
예제 #7
0
function render_home_page($numposts = 20, $page = 1)
{
    $start = (intval($page) - 1) * $numposts;
    $html = render_header("Home");
    $mysqli = db_connect();
    if (isset($_SESSION["user_id"])) {
        // does the logged in user have any friends yet ?
        $friends_sql = "SELECT COUNT(*) AS NumFriends FROM Friends WHERE UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]);
        $friends_result = $mysqli->query($friends_sql);
        $friends_row = $friends_result->fetch_assoc();
        $friends_count = $friends_row["NumFriends"];
        if ($friends_count > 0) {
            // get the friends only posts by people who call you a friend
            // also get friends public posts
            // also get your own posts
            $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar,Likes.Id AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " LEFT OUTER JOIN Friends FriendsOfMe ON FriendsOfMe.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND FriendsOfMe.FriendId=Posts.UserId" . " LEFT OUTER JOIN Friends FriendsOfAuthor ON Posts.UserId=FriendsOfAuthor.UserId AND FriendsOfAuthor.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " LEFT OUTER JOIN Likes ON Likes.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Likes.PostId=Posts.Id" . " WHERE" . " ((FriendsOfAuthor.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Privacy=" . POST_PRIVACY_FRIENDS_ONLY . " AND FriendsOfMe.FriendId=Posts.UserId)" . " OR" . " (FriendsOfMe.FriendId=Posts.UserId AND Posts.Privacy=" . POST_PRIVACY_PUBLIC . ")" . " OR" . " (Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . "))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " ORDER BY Created DESC LIMIT " . $mysqli->real_escape_string($start) . "," . $mysqli->real_escape_string($numposts);
            $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " LEFT OUTER JOIN Friends FriendsOfMe ON FriendsOfMe.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND FriendsOfMe.FriendId=Posts.UserId" . " LEFT OUTER JOIN Friends FriendsOfAuthor ON Posts.UserId=FriendsOfAuthor.UserId AND FriendsOfAuthor.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " LEFT OUTER JOIN Likes ON Likes.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Likes.PostId=Posts.Id" . " WHERE" . " ((FriendsOfAuthor.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Privacy=" . POST_PRIVACY_FRIENDS_ONLY . " AND FriendsOfMe.FriendId=Posts.UserId)" . " OR" . " (FriendsOfMe.FriendId=Posts.UserId AND Posts.Privacy=" . POST_PRIVACY_PUBLIC . ")" . " OR" . " (Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . "))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED;
        } else {
            // no friends - fetch popular content from the last 7 days
            $html .= "<div id=\"header\">\n" . "<h1>Welcome to " . SITE_NAME . " - No Friends Yet?</h1>\n" . "<p>Here is some popular content from the last 7 days. You might also like to check out the <a href=\"/explore/firehose\">Firehose</a>.</p>\n" . "</div>\n";
            $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar,null AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " WHERE (Posts.Created > (CURRENT_TIMESTAMP - INTERVAL '7' DAY))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND Posts.Privacy=" . POST_PRIVACY_PUBLIC . " ORDER BY Created DESC LIMIT " . $mysqli->real_escape_string($start) . "," . $mysqli->real_escape_string($numposts);
            $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " WHERE (Posts.Created > (CURRENT_TIMESTAMP - INTERVAL '7' DAY))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND Posts.Privacy=" . POST_PRIVACY_PUBLIC;
        }
    } else {
        // not logged in - fetch popular content from the last 7 days
        $html .= "<div id=\"header\">\n" . "<h1>Post, Friend, Follow, Like, Comment</h1>\n" . "<p>Welcome to a new social experience on the internet - <strong><a href=\"/register\">register</a></strong> now, and begin posting!</p>\n" . "</div>\n";
        $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar,null AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " WHERE (Posts.Created > (CURRENT_TIMESTAMP - INTERVAL '7' DAY))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND Posts.Privacy=" . POST_PRIVACY_PUBLIC . " ORDER BY Posts.Likes DESC LIMIT " . $mysqli->real_escape_string($start) . "," . $mysqli->real_escape_string($numposts);
        $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " WHERE (Posts.Created > (CURRENT_TIMESTAMP - INTERVAL '7' DAY))" . " AND Posts.Status=" . POST_STATUS_PUBLISHED . " AND Posts.Privacy=" . POST_PRIVACY_PUBLIC;
        //print "<p>".$sql;
        //print "<p>".$sql_count;
    }
    // fetch count for pagination
    $count_result = $mysqli->query($sql_count);
    $count_row = $count_result->fetch_assoc();
    $count = $count_row["NumPosts"];
    $post_result = $mysqli->query($sql);
    if (isset($_GET["debug"])) {
        print "<p><br /><br /><code>" . $sql . "</code></p>";
    }
    $html .= render_posts($mysqli, $post_result);
    $html .= render_pagination("home/" . $numposts, $page, $count, $numposts);
    $html .= render_display_controls();
    $html .= render_footer();
    // $html .= "<pre>".$sql."</pre>\n";
    return $html;
}
예제 #8
0
function render_messages_outbox($page)
{
    if (isset($_SESSION["user_id"])) {
        $start = (intval($page) - 1) * 20;
        $mysqli = db_connect();
        $overall_total_sql = "SELECT COUNT(Id) AS NumMessages FROM Messages WHERE ToUserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND ToStatus=0 AND ReadFlag=0";
        $overall_total_result = $mysqli->query($overall_total_sql);
        $overall_total_row = $overall_total_result->fetch_assoc();
        $overall_total = $overall_total_row["NumMessages"] > 0 ? " (" . $overall_total_row["NumMessages"] . ")" : "";
        $inbox_total_sql = "SELECT COUNT(Id) AS NumMessages FROM Messages WHERE ToUserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND ToStatus=0 AND Type=0 AND ReadFlag=0";
        $inbox_total_result = $mysqli->query($inbox_total_sql);
        $inbox_total_row = $inbox_total_result->fetch_assoc();
        $inbox_total = $inbox_total_row["NumMessages"] > 0 ? " (" . $inbox_total_row["NumMessages"] . ")" : "";
        $notification_total_sql = "SELECT COUNT(Id) AS NumMessages FROM Messages WHERE ToUserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND ToStatus=0 AND Type>0 AND ReadFlag=0";
        $notification_total_result = $mysqli->query($notification_total_sql);
        $notification_total_row = $notification_total_result->fetch_assoc();
        $notification_total = $notification_total_row["NumMessages"] > 0 ? " (" . $notification_total_row["NumMessages"] . ")" : "";
        $html = render_header("In-Box");
        $html .= "<div class=\"bg_menu_wrapper\">\n" . "<ul class=\"bg_menu\">\n" . "<li><a href=\"/messages/compose\" title=\"Compose\">Compose</a></li>\n" . "<li><a href=\"/messages/all\" title=\"All\">All" . $overall_total . "</a></li>\n" . "<li><a href=\"/messages/inbox\" title=\"Inbox\">Inbox" . $inbox_total . "</a></li>\n" . "<li class=\"selected\"><a href=\"/messages/outbox\" title=\"Outbox\">Outbox</a></li>\n" . "<li><a href=\"/messages/notifications\" title=\"Notifications\">Notifications" . $notification_total . "</a></li>\n" . "<li><a href=\"/messages/trash\" title=\"Trash\">Trash</a></li>\n" . "</ul>\n" . "<div class=\"clear\"></div>\n" . "</div>\n";
        $html .= "<div id=\"header\">\n" . "<h1>Outbox</h1>\n" . "<p>Messages you have sent to other users.</p>\n" . "<ul class=\"buttons\">\n" . "<li class=\"button\"><a href=\"/api/messages/remove_all_outbox\" onClick=\"return confirm('Are you sure?');\">Remove All</a></li>\n" . "</ul>\n" . "</div> <!-- #header -->\n";
        $sql = "SELECT Messages.*, FromUsers.Username As FromUsersUsername, FromUsers.Avatar AS FromUsersAvatar,ToUsers.Username As ToUsersUsername, ToUsers.Avatar AS ToUsersAvatar, ParentUsers.Username AS ParentUsersUsername, ParentMessages.Id AS ParentMessagesId" . " FROM Messages" . " INNER JOIN Users FromUsers ON Messages.FromUserId=FromUsers.Id" . " INNER JOIN Users ToUsers ON Messages.ToUserId=ToUsers.Id" . " LEFT OUTER JOIN Messages ParentMessages ON ParentMessages.Id=Messages.ParentId" . " LEFT OUTER JOIN Users ParentUsers ON ParentMessages.FromUserId=ParentUsers.Id" . " WHERE Messages.Type=0 AND Messages.FromStatus=0 AND Messages.FromUserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " ORDER BY Messages.Created DESC LIMIT " . $mysqli->real_escape_string($start) . ",20";
        $sql_count = "SELECT COUNT(*) AS NumMessages" . " FROM Messages" . " WHERE Messages.Type=0 AND Messages.FromStatus=0 AND Messages.FromUserId=" . $mysqli->real_escape_string($_SESSION["user_id"]);
        $count_result = $mysqli->query($sql_count);
        $count_row = $count_result->fetch_assoc();
        $count = $count_row["NumMessages"];
        $messages_result = $mysqli->query($sql);
        if ($messages_result->num_rows > 0) {
            $html .= "<div id=\"messages\">\n\n";
            while ($message_row = @$messages_result->fetch_assoc()) {
                $html .= render_message($message_row);
            }
            $html .= "</div> <!-- #messages -->\n\n";
        } else {
            $html .= "<div id=\"messages\">\n" . "<div class=\"message_wrapper\">\n" . "<div class=\"message\">\n" . "<div class=\"body\">\n" . "<p class='center'>You have no messages in your outbox.</p>\n" . "</div>\n" . "</div>\n" . "</div>\n" . "</div>\n";
        }
        // Pagination
        $html .= render_pagination("messages/outbox", $page, $count, 20);
        $html .= render_footer();
    } else {
        header("Location: /403");
    }
    return $html;
}
예제 #9
0
function render_post_drafts_page($page)
{
    if (isset($_SESSION["user_id"])) {
        $start = (intval($page) - 1) * 20;
        $html = render_header("Draft Posts");
        $mysqli = db_connect();
        $html .= "<div class=\"bg_menu_wrapper\">\n" . "<ul class=\"bg_menu\">\n" . "<li><a href=\"/post/add\" title=\"Compose\">Compose</a></li>\n" . "<li class=\"selected\"><a href=\"/post/drafts\" title=\"Draft Posts\">Draft Posts</a></li>\n" . "</ul>\n" . "<div class=\"clear\"></div>\n" . "</div>\n";
        $sql = "";
        $count_sql = "";
        $sql = "SELECT DISTINCT Posts.*,Users.Username,Users.Avatar,Likes.Id AS LikeId FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " LEFT OUTER JOIN Likes ON Likes.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Likes.PostId=Posts.Id" . " LEFT OUTER JOIN Friends FriendsA ON Posts.UserId=FriendsA.UserId" . " WHERE Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Status=" . POST_STATUS_DRAFT . " ORDER BY Created DESC LIMIT " . $mysqli->real_escape_string($start) . ",20";
        $sql_count = "SELECT COUNT(DISTINCT Posts.Id) AS NumPosts FROM Posts" . " INNER JOIN Users ON Posts.UserId=Users.Id" . " LEFT OUTER JOIN Friends FriendsA ON Posts.UserId=FriendsA.UserId" . " WHERE Posts.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Posts.Status=" . POST_STATUS_DRAFT;
        // fetch count for pagination
        $count_result = $mysqli->query($sql_count);
        $count_row = $count_result->fetch_assoc();
        $count = $count_row["NumPosts"];
        $post_result = $mysqli->query($sql);
        $html .= "<div id=\"header\">\n" . "<h1>You have " . $count . " draft posts</h1>\n" . "<p>All of your draft posts.</p>\n" . "</div>";
        $html .= render_posts($mysqli, $post_result);
        // Pagination
        $html .= render_pagination("account/drafts", $page, $count, 20);
        $html .= render_display_controls();
        $html .= render_footer();
        return $html;
    } else {
        header("Location: /401");
    }
}
예제 #10
0
function render_profile_page_followers($username, $page)
{
    $html = "";
    $start = (intval($page) - 1) * 20;
    $mysqli = db_connect();
    if (isset($_SESSION["user_id"])) {
        $sql = "SELECT Users.*,Friends.FriendId,FriendsB.FriendId AS FriendBId FROM Users" . " LEFT OUTER JOIN Friends ON Friends.UserId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND Friends.FriendId=Users.Id" . " LEFT OUTER JOIN Friends FriendsB ON FriendsB.FriendId=" . $mysqli->real_escape_string($_SESSION["user_id"]) . " AND FriendsB.UserId=Users.Id" . " WHERE Username='******'";
    } else {
        $sql = "SELECT * FROM Users WHERE Username='******'";
    }
    $user_result = $mysqli->query($sql);
    if ($user_result->num_rows > 0) {
        $user_row = $user_result->fetch_assoc();
        $user_id = $user_row["Id"];
        $html .= "<div class=\"profile_menu_wrapper\">\n" . "<ul class=\"profile_menu\">\n" . "<li><a href=\"/" . $username . "\" title=\"Posts\">Posts</a></li>\n" . ($user_row["ShowFriends"] == 1 ? "<li><a href=\"/" . $username . "/friends\" title=\"Friends\">Friends</a></li>\n" : "") . ($user_row["ShowFriendOf"] == 1 ? "<li class=\"selected\"><a href=\"/" . $username . "/followers\" title=\"Followers\">Followers</a></li>\n" : "") . "</ul>\n" . "<div class=\"clear\"></div>\n" . "</div>\n";
        $sql = "SELECT Users.*, COUNT(DISTINCT Posts.Id) AS PostCount, COUNT(DISTINCT Comments.Id) AS CommentCount, COUNT(DISTINCT Likes.Id) AS LikesCount,COUNT(DISTINCT Posts.Id) + COUNT(DISTINCT Comments.Id) + COUNT(DISTINCT Likes.Id) AS TotalCount\n" . " FROM Users" . " INNER JOIN Friends ON Users.Id=Friends.UserId" . " LEFT OUTER JOIN Posts ON Posts.UserId=Users.Id AND Posts.Status=1 AND Posts.Privacy=0" . " LEFT OUTER JOIN Comments ON Posts.Id=Comments.PostId AND Comments.UserId<>Users.Id" . " LEFT OUTER JOIN Likes ON Posts.Id=Likes.PostId AND Likes.UserId<>Users.Id" . " WHERE Friends.FriendId=" . $mysqli->real_escape_string($user_id) . " GROUP BY Users.Id" . " ORDER BY TotalCount DESC" . " LIMIT " . $mysqli->real_escape_string($start) . ",20";
        $sql_count = "SELECT COUNT(DISTINCT Users.Id) AS NumUsers" . " FROM Users" . " INNER JOIN Friends ON Users.Id=Friends.UserId" . " WHERE Friends.FriendId=" . $user_id;
        // fetch count for pagination
        $count_result = $mysqli->query($sql_count);
        $count_row = $count_result->fetch_assoc();
        $count = $count_row["NumUsers"];
        $user_result = $mysqli->query($sql);
        if ($user_result->num_rows > 0) {
            $html .= "<div class=\"directory_users\">\n";
            while ($user_row = @$user_result->fetch_assoc()) {
                $html .= render_user($user_row);
            }
            $html .= "</div>\n";
        } else {
            $html .= "<div id=\"header\"><h3>Nobody has added you as a friend yet.</h3><p>Go explore the public posts, and get to know a few people :)</p></div>\n";
        }
        $html .= render_pagination($username . "/followers", $page, $count, 20);
        $html .= "</div> <!-- .page -->\n" . "</div> <!-- .page_wrapper -->\n";
        $html .= render_footer();
        return $html;
    }
}