예제 #1
0
     echo "            <td align=\"left\" width=\"33%\">&nbsp;</td>\n";
     echo "            <td class=\"postbody\" align=\"center\" width=\"33%\" style=\"white-space: nowrap\">", html_page_links("forums.php?webtag={$webtag}&view_type={$view_type}&webtag_search={$webtag_search}&sort_by={$sort_by}&sort_dir={$sort_dir}", $page, $forums_array['forums_count'], 10, 'page'), "</td>\n";
     echo "            <td align=\"right\" width=\"33%\" style=\"white-space: nowrap\">", gettext("View"), ":&nbsp;", form_dropdown_array('view_type', $forum_search_header_array, FORUMS_SHOW_SEARCH, "onchange=\"submit()\""), "&nbsp;", form_submit('change_view', gettext("Go")), "</td>\n";
     echo "          </tr>\n";
     echo "        </table>\n";
     echo "      </td>\n";
     echo "    </tr>\n";
     echo "    <tr>\n";
     echo "      <td align=\"left\">&nbsp;</td>\n";
     echo "    </tr>\n";
     echo "  </table>\n";
     echo "</form>\n";
     echo "</div>\n";
     echo "<br />\n";
 } else {
     $forums_array = get_my_forums($view_type, $page, $sort_by, $sort_dir);
     echo "<h1>", gettext("My Forums"), "<img src=\"", html_style_image('separator.png'), "\" alt=\"\" border=\"0\" />{$forum_header_array[$view_type]}</h1>\n";
     if (isset($_GET['webtag_error'])) {
         html_display_error_msg(gettext("Invalid forum or forum is not available"), '70%', 'center');
     } else {
         if (isset($_GET['added'])) {
             html_display_success_msg(gettext("Successfully added forum to Favourites."), '70%', 'center');
         } else {
             if (isset($_GET['removed'])) {
                 html_display_success_msg(gettext("Successfully removed forum from Favourites."), '70%', 'center');
             } else {
                 if (isset($_GET['ignored'])) {
                     html_display_success_msg(gettext("Successfully ignored forum."), '70%', 'center');
                 } else {
                     if (isset($_GET['unignored'])) {
                         html_display_success_msg(gettext("Successfully unignored forum."), '70%', 'center');
예제 #2
0
function light_draw_my_forums()
{
    $webtag = get_webtag();
    forum_check_webtag_available($webtag);
    if (isset($_GET['page']) && is_numeric($_GET['page'])) {
        $page = $_GET['page'];
    } else {
        $page = 1;
    }
    if (isset($_GET['webtag_error']) && strlen(trim($_GET['webtag_error'])) > 0) {
        light_html_display_error_msg(gettext("Invalid forum or forum is not available"));
    }
    if (session::logged_in()) {
        $forums_array = get_my_forums(FORUMS_SHOW_ALL, $page);
        if (isset($forums_array['forums_array']) && sizeof($forums_array['forums_array']) > 0) {
            foreach ($forums_array['forums_array'] as $forum) {
                echo "<div class=\"forum\">\n";
                echo "<h3><a href=\"lthread_list.php?webtag={$forum['WEBTAG']}\">{$forum['FORUM_NAME']}</a></h3>\n";
                echo "<div class=\"forum_inner\">\n";
                echo "<div class=\"forum_info\">", $forum['FORUM_DESC'], "</div>";
                echo "<ul>\n";
                echo "<li>\n";
                echo "<span class=\"forum_messages\">";
                if (isset($forum['UNREAD_TO_ME']) && $forum['UNREAD_TO_ME'] > 0) {
                    if (isset($forum['UNREAD_MESSAGES']) && is_numeric($forum['UNREAD_MESSAGES']) && $forum['UNREAD_MESSAGES'] > 0) {
                        echo sprintf(gettext("%s Unread Messages"), format_number($forum['UNREAD_MESSAGES'])), " (", sprintf(gettext("%s Unread &quot;To: Me&quot;"), format_number($forum['UNREAD_TO_ME'])), ")\n";
                    } else {
                        echo sprintf(gettext("%s Unread &quot;To: Me&quot;"), format_number($forum['UNREAD_TO_ME']));
                    }
                } else {
                    if (isset($forum['UNREAD_MESSAGES']) && is_numeric($forum['UNREAD_MESSAGES']) && $forum['UNREAD_MESSAGES'] > 0) {
                        echo sprintf(gettext("%s Unread Messages"), format_number($forum['UNREAD_MESSAGES']));
                    } else {
                        echo gettext("No Unread Messages");
                    }
                }
                echo "</span>\n";
                echo "</li>\n";
                echo "<li>";
                if (isset($forum['LAST_VISIT']) && $forum['LAST_VISIT'] > 0) {
                    echo "<span class=\"forum_last_visit\">", gettext("Last Visited"), ": ", format_date_time($forum['LAST_VISIT']), "</span>\n";
                } else {
                    echo "<span class=\"forum_last_visit\">", gettext("Last Visited"), ": ", gettext("Never"), "</span>\n";
                }
                echo "</li>\n";
                echo "</ul>\n";
                echo "</div>\n";
                echo "</div>\n";
            }
            html_page_links("lforums.php?webtag={$webtag}", $page, $forums_array['forums_count'], 10);
        } else {
            echo "<h3>", gettext("There are no forums available. Please login to view your forums."), "</h3>\n";
        }
    } else {
        $forums_array = get_forum_list($page);
        if (isset($forums_array['forums_array']) && sizeof($forums_array['forums_array']) > 0) {
            foreach ($forums_array['forums_array'] as $forum) {
                echo "<div class=\"forum\">\n";
                echo "<h3><a href=\"lthread_list.php?webtag={$forum['WEBTAG']}\">{$forum['FORUM_NAME']}</a></h3>\n";
                echo "<div class=\"forum_inner\">\n";
                echo "<div class=\"forum_info\">", $forum['FORUM_DESC'], "</div>";
                echo "<ul>\n";
                echo "<li>\n";
                echo "<span class=\"forum_messages\">", format_number($forum['MESSAGES']), " ", gettext("Messages"), "</span>\n";
                echo "</li>\n";
                echo "</ul>\n";
                echo "</div>\n";
                echo "</div>\n";
            }
            html_page_links("lforums.php?webtag={$webtag}", $page, $forums_array['forums_count'], 10);
        } else {
            echo "<h3>", gettext("There are no forums available. Please login to view your forums."), "</h3>\n";
        }
    }
}
예제 #3
0
function get_my_forums($view_type, $page = 1, $sort_by = 'LAST_VISIT', $sort_dir = 'DESC')
{
    if (!($db = db::get())) {
        return false;
    }
    if (!is_numeric($view_type)) {
        return false;
    }
    if (!is_numeric($page) || $page < 1) {
        $page = 1;
    }
    $offset = calculate_page_offset($page, 10);
    $sort_by_array = array('FORUM_NAME', 'FORUM_DESC', 'LAST_VISIT');
    $sort_dir_array = array('ASC', 'DESC');
    if (!in_array($sort_by, $sort_by_array)) {
        $sort_by = 'LAST_VISIT';
    }
    if (!in_array($sort_dir, $sort_dir_array)) {
        $sort_dir = 'DESC';
    }
    if (($uid = session::get_value('UID')) === false) {
        return false;
    }
    $forums_array = array();
    if ($view_type == FORUMS_SHOW_ALL) {
        $sql = "SELECT SQL_CALC_FOUND_ROWS CONCAT(FORUMS.DATABASE_NAME, '`.`', FORUMS.WEBTAG, '_') AS PREFIX, ";
        $sql .= "FORUM_SETTINGS_NAME.SVALUE AS FORUM_NAME, FORUM_SETTINGS_DESC.SVALUE AS FORUM_DESC, ";
        $sql .= "FORUMS.FID, FORUMS.WEBTAG, FORUMS.ACCESS_LEVEL, USER_FORUM.INTEREST, UNIX_TIMESTAMP(USER_FORUM.LAST_VISIT) AS LAST_VISIT FROM FORUMS ";
        $sql .= "LEFT JOIN FORUM_SETTINGS FORUM_SETTINGS_NAME ON (FORUM_SETTINGS_NAME.FID = FORUMS.FID AND FORUM_SETTINGS_NAME.SNAME = 'forum_name') ";
        $sql .= "LEFT JOIN FORUM_SETTINGS FORUM_SETTINGS_DESC ON (FORUM_SETTINGS_DESC.FID = FORUMS.FID AND FORUM_SETTINGS_DESC.SNAME = 'forum_desc') ";
        $sql .= "LEFT JOIN USER_FORUM ON (USER_FORUM.FID = FORUMS.FID AND USER_FORUM.UID = '{$uid}') ";
        $sql .= "WHERE FORUMS.ACCESS_LEVEL > -1  AND FORUMS.ACCESS_LEVEL < 3 AND (USER_FORUM.INTEREST > -1 ";
        $sql .= "OR USER_FORUM.INTEREST IS NULL) ORDER BY {$sort_by} {$sort_dir} LIMIT {$offset}, 10";
    } else {
        if ($view_type == FORUMS_SHOW_FAVS) {
            $sql = "SELECT SQL_CALC_FOUND_ROWS CONCAT(FORUMS.DATABASE_NAME, '`.`', FORUMS.WEBTAG, '_') AS PREFIX, ";
            $sql .= "FORUM_SETTINGS_NAME.SVALUE AS FORUM_NAME, FORUM_SETTINGS_DESC.SVALUE AS FORUM_DESC, ";
            $sql .= "FORUMS.FID, FORUMS.WEBTAG, FORUMS.ACCESS_LEVEL, USER_FORUM.INTEREST, UNIX_TIMESTAMP(USER_FORUM.LAST_VISIT) AS LAST_VISIT FROM FORUMS ";
            $sql .= "LEFT JOIN FORUM_SETTINGS FORUM_SETTINGS_NAME ON (FORUM_SETTINGS_NAME.FID = FORUMS.FID AND FORUM_SETTINGS_NAME.SNAME = 'forum_name') ";
            $sql .= "LEFT JOIN FORUM_SETTINGS FORUM_SETTINGS_DESC ON (FORUM_SETTINGS_DESC.FID = FORUMS.FID AND FORUM_SETTINGS_DESC.SNAME = 'forum_desc') ";
            $sql .= "LEFT JOIN USER_FORUM ON (USER_FORUM.FID = FORUMS.FID AND USER_FORUM.UID = '{$uid}') ";
            $sql .= "WHERE FORUMS.ACCESS_LEVEL > -1 AND FORUMS.ACCESS_LEVEL < 3 AND USER_FORUM.INTEREST = 1 ";
            $sql .= "ORDER BY {$sort_by} {$sort_dir} LIMIT {$offset}, 10";
        } else {
            if ($view_type == FORUMS_SHOW_IGNORED) {
                $sql = "SELECT SQL_CALC_FOUND_ROWS CONCAT(FORUMS.DATABASE_NAME, '`.`', FORUMS.WEBTAG, '_') AS PREFIX, ";
                $sql .= "FORUM_SETTINGS_NAME.SVALUE AS FORUM_NAME, FORUM_SETTINGS_DESC.SVALUE AS FORUM_DESC, ";
                $sql .= "FORUMS.FID, FORUMS.WEBTAG, FORUMS.ACCESS_LEVEL, USER_FORUM.INTEREST, UNIX_TIMESTAMP(USER_FORUM.LAST_VISIT) AS LAST_VISIT FROM FORUMS ";
                $sql .= "LEFT JOIN FORUM_SETTINGS FORUM_SETTINGS_NAME ON (FORUM_SETTINGS_NAME.FID = FORUMS.FID AND FORUM_SETTINGS_NAME.SNAME = 'forum_name') ";
                $sql .= "LEFT JOIN FORUM_SETTINGS FORUM_SETTINGS_DESC ON (FORUM_SETTINGS_DESC.FID = FORUMS.FID AND FORUM_SETTINGS_DESC.SNAME = 'forum_desc') ";
                $sql .= "LEFT JOIN USER_FORUM ON (USER_FORUM.FID = FORUMS.FID AND USER_FORUM.UID = '{$uid}') ";
                $sql .= "WHERE FORUMS.ACCESS_LEVEL > -1 AND FORUMS.ACCESS_LEVEL < 3 AND USER_FORUM.INTEREST = -1 ";
                $sql .= "ORDER BY {$sort_by} {$sort_dir} LIMIT {$offset}, 10";
            }
        }
    }
    if (!($result = $db->query($sql))) {
        return false;
    }
    $sql = "SELECT FOUND_ROWS() AS ROW_COUNT";
    if (!($result_count = $db->query($sql))) {
        return false;
    }
    list($forums_count) = $result_count->fetch_row();
    if ($result->num_rows == 0 && $forums_count > 0 && $page > 1) {
        return get_my_forums($view_type, $page - 1, $sort_by, $sort_dir);
    }
    while ($forum_data = $result->fetch_assoc()) {
        $forum_fid = $forum_data['FID'];
        if (!isset($forum_data['FORUM_NAME']) || strlen(trim($forum_data['FORUM_NAME'])) < 1) {
            $forum_data['FORUM_NAME'] = gettext("A Beehive Forum");
        }
        if (!isset($forum_data['FORUM_DESC']) || strlen(trim($forum_data['FORUM_DESC'])) < 1) {
            $forum_data['FORUM_DESC'] = "";
        }
        if (!isset($forum_data['LAST_VISIT']) || is_null($forum_data['LAST_VISIT'])) {
            $forum_data['LAST_VISIT'] = 0;
        }
        $unread_cutoff_datetime = forum_get_unread_cutoff_datetime();
        $folders = folder_get_available_by_forum($forum_fid);
        if ($unread_cutoff_datetime !== false) {
            $sql = "SELECT SUM(THREAD.LENGTH) - SUM(COALESCE(USER_THREAD.LAST_READ, 0)) FROM `{$forum_data['PREFIX']}THREAD` THREAD ";
            $sql .= "LEFT JOIN `{$forum_data['PREFIX']}USER_THREAD` USER_THREAD ON (USER_THREAD.TID = THREAD.TID AND USER_THREAD.UID = '{$uid}') ";
            $sql .= "LEFT JOIN `{$forum_data['PREFIX']}USER_FOLDER` USER_FOLDER ON (USER_FOLDER.FID = THREAD.FID AND USER_FOLDER.UID = '{$uid}') ";
            $sql .= "WHERE THREAD.FID IN ({$folders}) AND (USER_FOLDER.INTEREST > -1 OR USER_FOLDER.INTEREST IS NULL) ";
            $sql .= "AND (USER_THREAD.INTEREST > -1 OR USER_THREAD.INTEREST IS NULL) ";
            $sql .= "AND (THREAD.MODIFIED > CAST('{$unread_cutoff_datetime}' AS DATETIME)) ";
            if (!($result_unread_count = $db->query($sql))) {
                return false;
            }
            list($unread_messages) = $result_unread_count->fetch_row();
            $forum_data['UNREAD_MESSAGES'] = $unread_messages;
        } else {
            $forum_data['UNREAD_MESSAGES'] = 0;
        }
        $sql = "SELECT COALESCE(SUM(THREAD.LENGTH), 0) FROM `{$forum_data['PREFIX']}THREAD` THREAD ";
        $sql .= "LEFT JOIN `{$forum_data['PREFIX']}USER_THREAD` USER_THREAD ON (USER_THREAD.TID = THREAD.TID AND USER_THREAD.UID = '{$uid}') ";
        $sql .= "LEFT JOIN `{$forum_data['PREFIX']}USER_FOLDER` USER_FOLDER ON (USER_FOLDER.FID = THREAD.FID AND USER_FOLDER.UID = '{$uid}') ";
        $sql .= "WHERE THREAD.FID IN ({$folders}) AND (USER_FOLDER.INTEREST > -1 OR USER_FOLDER.INTEREST IS NULL) ";
        $sql .= "AND (USER_THREAD.INTEREST > -1 OR USER_THREAD.INTEREST IS NULL) ";
        if (!($result_messages_count = $db->query($sql))) {
            return false;
        }
        list($num_messages) = $result_messages_count->fetch_row();
        $forum_data['NUM_MESSAGES'] = $num_messages;
        $sql = "SELECT COUNT(POST.PID) AS UNREAD_TO_ME ";
        $sql .= "FROM `{$forum_data['PREFIX']}THREAD` THREAD ";
        $sql .= "LEFT JOIN `{$forum_data['PREFIX']}POST` POST ";
        $sql .= "ON (POST.TID = THREAD.TID) WHERE THREAD.FID IN ({$folders}) ";
        $sql .= "AND POST.TO_UID = '{$uid}' AND POST.VIEWED IS NULL ";
        if (!($result_unread_to_me = $db->query($sql))) {
            return false;
        }
        list($unread_to_me) = $result_unread_to_me->fetch_row();
        $forum_data['UNREAD_TO_ME'] = $unread_to_me;
        if ($forum_data['NUM_MESSAGES'] < 0) {
            $forum_data['NUM_MESSAGES'] = 0;
        }
        if ($forum_data['UNREAD_MESSAGES'] < 0) {
            $forum_data['UNREAD_MESSAGES'] = 0;
        }
        if ($forum_data['UNREAD_TO_ME'] < 0) {
            $forum_data['UNREAD_TO_ME'] = 0;
        }
        $forums_array[] = $forum_data;
    }
    return array('forums_array' => $forums_array, 'forums_count' => $forums_count);
}