Esempio n. 1
0
// basic forum information is not available
//
$board_config = BoardCache::conf();
// Cache topic icons
if (!Cache::array_load('topic_icons', basename(dirname(__FILE__)), true)) {
    $result = $db->sql_query("SELECT * FROM " . TOPIC_ICONS_TABLE);
    while ($row = $db->sql_fetchrow($result, SQL_ASSOC)) {
        $topic_icons[$row['icon_id']] = $row;
    }
    $db->sql_freeresult($result);
    Cache::array_save('topic_icons', basename(dirname(__FILE__)));
}
//if (defined('BBAttach_mod')) {
require_once 'includes/phpBB/attach/functions_includes.php';
require_once 'includes/phpBB/attach/functions_attach.php';
require_once 'includes/phpBB/attach/functions_delete.php';
require_once 'includes/phpBB/attach/functions_thumbs.php';
require_once 'includes/phpBB/attach/functions_filetypes.php';
//
// Get Attachment Config
//
$attach_config = BoardCache::attach();
// Functions for displaying Attachment Things
require_once 'includes/phpBB/displaying.php';
require_once 'includes/phpBB/class.attachments.main.php';
if (isset($attach_config['allow_ftp_upload']) && !intval($attach_config['allow_ftp_upload'])) {
    $upload_dir = $attach_config['upload_dir'];
} elseif (isset($attach_config['allow_ftp_upload'])) {
    $upload_dir = $attach_config['download_path'];
}
//}
Esempio n. 2
0
function display_forums($parent = 0, $display_moderators = TRUE)
{
    global $db, $board_config, $lang, $images, $userdata, $CPG_SESS, $module_name;
    $tracking_topics = isset($CPG_SESS[$module_name]['track_topics']) ? $CPG_SESS[$module_name]['track_topics'] : array();
    $tracking_forums = isset($CPG_SESS[$module_name]['track_forums']) ? $CPG_SESS[$module_name]['track_forums'] : array();
    # Find which forums are visible for this user
    $tmp_forums = $db->sql_ufetchrowset('SELECT forum_id, auth_view FROM ' . FORUMS_TABLE, SQL_ASSOC);
    $is_auth_ary = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata, $tmp_forums);
    $c = count($tmp_forums);
    $forums = array();
    for ($i = 0; $i < $c; ++$i) {
        if ($is_auth_ary[$tmp_forums[$i]['forum_id']]['auth_view']) {
            $forums[] = $tmp_forums[$i]['forum_id'];
        }
    }
    if (0 === count($forums)) {
        return array();
    }
    unset($tmp_forums);
    $forums = implode(',', $forums);
    # Define appropriate SQL
    //$where = $parent ? 'AND f.parent_id='.$parent : '';
    $where = '';
    switch (SQL_LAYER) {
        case 'oracle':
            $sql = 'SELECT f.*, p.post_time, p.post_username, u.username, u.user_id
					FROM ' . FORUMS_TABLE . ' f, ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
					WHERE p.post_id = f.forum_last_post_id(+)
						AND u.user_id = p.poster_id(+)
					ORDER BY f.cat_id, f.forum_order';
            break;
        default:
            $sql = 'SELECT f.*, p.post_time, p.post_username, u.username, u.user_id
					FROM (( ' . FORUMS_TABLE . ' f
					LEFT JOIN ' . POSTS_TABLE . ' p ON p.post_id = f.forum_last_post_id )
					LEFT JOIN ' . USERS_TABLE . ' u ON u.user_id = p.poster_id )
					WHERE f.forum_id IN (' . $forums . ') ' . $where . '
					ORDER BY f.cat_id, f.forum_order';
            break;
    }
    $result = $db->sql_query($sql);
    # Save a copy of child forums
    $forums = $childs = array();
    while ($row = $db->sql_fetchrow($result, SQL_ASSOC)) {
        if (!$parent && 0 < $row['parent_id']) {
            $childs[$row['parent_id']][] = $row;
        } elseif ($parent && $row['parent_id'] != $parent) {
            $childs[$row['parent_id']][] = $row;
        } else {
            $forums[] = $row;
        }
        /*	# Lanzer speedup
        		if ($row['post_time'] > $userdata['user_lastvisit']) {
        			$new_topic_data[$row['forum_id']][$row['topic_id']] = $row['post_time'];
        		}	*/
    }
    $db->sql_freeresult($result);
    # Obtain a list of topic ids which contain posts made since user last visited
    if (is_user()) {
        $lastvisit = $userdata['user_lastvisit'];
        if (isset($CPG_SESS[$module_name]['track_all'])) {
            $lastvisit = $CPG_SESS[$module_name]['track_all'];
        }
        $result = $db->sql_query('SELECT t.forum_id, t.topic_id, p.post_time
				FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p
				WHERE p.post_id = t.topic_last_post_id
					AND p.post_time > ' . $lastvisit . '
					AND t.topic_moved_id = 0
				ORDER BY p.post_time DESC');
        $new_topic_data = array();
        while ($topic_data = $db->sql_fetchrow($result, SQL_ASSOC)) {
            $forum_id = $topic_data['forum_id'];
            if (empty($new_topic_data[$forum_id])) {
                if (empty($tracking_topics[$topic_data['topic_id']])) {
                    $new_topic_data[$forum_id] = true;
                } elseif ($tracking_topics[$topic_data['topic_id']] < $topic_data['post_time']) {
                    $new_topic_data[$forum_id] = true;
                }
                if (!empty($tracking_forums[$forum_id])) {
                    $new_topic_data[$forum_id] = $tracking_forums[$forum_id] < $topic_data['post_time'];
                }
            }
        }
        $db->sql_freeresult($result);
    }
    $moderators = $display_moderators ? BoardCache::moderators() : array();
    $c = count($forums);
    for ($i = 0; $i < $c; ++$i) {
        $forum_id = $forums[$i]['forum_id'];
        $forums[$i]['subforums'] = '';
        $forums[$i]['subforums_list'] = '';
        $forums[$i]['subforums_lang'] = '';
        $ftopics = $forums[$i]['forum_topics'];
        $fposts = $forums[$i]['forum_posts'];
        if ($forums[$i]['forum_type'] >= 2) {
            $folder_image = $images['forum_link'];
            $folder_alt = 'link';
        } else {
            if ($forums[$i]['forum_status'] == FORUM_LOCKED) {
                $folder_image = $images['forum_locked'];
                $folder_alt = $lang['Forum_locked'];
            } else {
                $unread_topics = false;
                if (is_user()) {
                    $unread_topics = !empty($new_topic_data[$forum_id]);
                }
                if (!empty($childs[$forum_id])) {
                    $forums[$i]['subforums'] = $childs[$forum_id];
                    $subforums = array();
                    foreach ($childs[$forum_id] as $subforum) {
                        $ftopics += $subforum['forum_topics'];
                        $fposts += $subforum['forum_posts'];
                        if ($subforum['parent_id'] == $forum_id) {
                            if ($subforum['forum_type'] == 2) {
                                $subforums[] = '<a href="' . URL::index($subforum['forum_link']) . '">' . $subforum['forum_name'] . '</a>';
                            } elseif ($subforum['forum_type'] == 3) {
                                $subforums[] = '<a href="' . $subforum['forum_link'] . '">' . $subforum['forum_name'] . '</a>';
                            } else {
                                $subforums[] = '<a href="' . URL::index($module_name . '&amp;viewforum&amp;f=' . $subforum['forum_id']) . '">' . $subforum['forum_name'] . '</a>';
                            }
                        }
                        if ($subforum['post_time'] > $forum_id['post_time'] && $subforum['post_time'] > $forums[$i]['post_time']) {
                            $forums[$i]['post_time'] = $subforum['post_time'];
                            $forums[$i]['username'] = $subforum['username'];
                            $forums[$i]['user_id'] = $subforum['user_id'];
                            $forums[$i]['forum_last_post_id'] = $subforum['forum_last_post_id'];
                        }
                    }
                    $forums[$i]['subforums_list'] = implode(', ', $subforums);
                    $forums[$i]['subforums_lang'] = count($subforums) == 1 ? $lang['Subforum'] : $lang['Subforums'];
                }
                if ($forums[$i]['forum_type'] == 1) {
                    $folder_image = $unread_topics ? $images['forum_new_sub'] : $images['forum_sub'];
                } else {
                    $folder_image = $unread_topics ? $images['forum_new'] : $images['forum'];
                }
                $folder_alt = $unread_topics ? $lang['New_posts'] : $lang['No_new_posts'];
            }
        }
        if (isset($moderators[$forum_id])) {
            $l_moderators = count($moderators[$forum_id]) === 1 ? $lang['Moderator'] : $lang['Moderators'];
            $moderator_list = implode(', ', $moderators[$forum_id]);
        } else {
            $l_moderators = '';
            $moderator_list = '';
        }
        $forums[$i]['post_username'] = $forums[$i]['post_username'] ? $forums[$i]['post_username'] : $lang['Guest'];
        $forums[$i]['folder_image'] = $folder_image;
        $forums[$i]['folder_alt'] = $folder_alt;
        $forums[$i]['l_moderators'] = $l_moderators;
        $forums[$i]['moderator_list'] = $moderator_list;
        $forums[$i]['forum_topics'] = $ftopics;
        $forums[$i]['forum_posts'] = $fposts;
    }
    return $forums;
}
Esempio n. 3
0
        URL::refresh(URL::index());
        $message = $lang['Forums_marked_read'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . URL::index() . '">', '</a> ');
        message_die(GENERAL_MESSAGE, $message);
    }
}
//
// End handle marking posts
//
//
// If you don't use these stats on your index you may want to consider removing them
//
$l_total_post_s = $total_posts = 0;
//
// Start page proper
//
$category_rows = BoardCache::categories();
if (!($total_categories = count($category_rows))) {
    message_die(GENERAL_MESSAGE, $lang['No_forums']);
}
require_once 'includes/phpBB/functions_display.php';
$forum_data = display_forums();
if (!($total_forums = count($forum_data))) {
    message_die(GENERAL_MESSAGE, $lang['No_forums']);
}
# Start output of page
$page_title = _HOME;
//$lang['Index'];
require_once 'includes/phpBB/page_header.php';
$template->assign_vars(array('FORUM_IMG' => $images['forum'], 'FORUM_NEW_IMG' => $images['forum_new'], 'FORUM_LOCKED_IMG' => $images['forum_locked'], 'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts), 'FORUM_SUB_IMG' => $images['forum_sub'], 'FORUM_NEW_SUB_IMG' => $images['forum_new_sub'], 'FORUM_LOCKED_SUB_IMG' => $images['forum_locked_sub'], 'U_INDEX' => URL::index(), 'L_INDEX' => _ForumsLANG, 'L_FORUM' => $lang['Forum'], 'L_TOPICS' => $lang['Topics'], 'L_REPLIES' => $lang['Replies'], 'L_VIEWS' => $lang['Views'], 'L_POSTS' => $lang['Posts'], 'L_LAST_POST' => $lang['Last_Post'], 'L_NO_POSTS' => $lang['No_Posts'], 'L_NO_NEW_POSTS' => $lang['No_new_posts'], 'L_NO_NEW_SUB_POSTS' => $lang['No_new_sub_posts'], 'L_NEW_POSTS' => $lang['New_posts'], 'L_NEW_SUB_POSTS' => $lang['New_sub_posts'], 'L_NO_NEW_POSTS_LOCKED' => $lang['No_new_posts_locked'], 'L_NEW_POSTS_LOCKED' => $lang['New_posts_locked'], 'L_MODERATOR' => $lang['Moderators'], 'L_ADMINISTRATOR' => $lang['Auth_Admin'], 'L_FORUM_LOCKED' => $lang['Forum_is_locked'], 'L_SUBFORUM_LOCKED' => $lang['Subforum_is_locked'], 'L_MARK_FORUMS_READ' => $lang['Mark_all_forums'], 'U_MARK_READ' => URL::index('&amp;mark=forums')));
# Okay, let's build the index
for ($i = 0; $i < $total_categories; ++$i) {
Esempio n. 4
0
//
if ($is_auth['auth_mod'] && $board_config['prune_enable']) {
    if ($forum_row['prune_next'] < time() && $forum_row['prune_enable']) {
        require_once 'includes/phpBB/prune.php';
        require_once 'includes/phpBB/functions_admin.php';
        auto_prune($forum_id);
    }
}
//
// End of forum prune
//
//
// Obtain list of moderators of each forum
// First users, then groups ... broken into two queries
//
$moderators = BoardCache::moderators($forum_id);
$l_moderators = count($moderators) === 1 ? $lang['Moderator'] : $lang['Moderators'];
$moderators = !empty($moderators) ? implode(', ', $moderators) : $lang['None'];
// Moderators: None
# Generate a 'Show topics in previous x days' select box. If the topicsdays var is sent
# then get it's value, find the number of topics with dates newer than it (to properly
# handle pagination) and alter the main query
$previous_days = array(0, 1, 7, 14, 30, 91, 182, 364);
$previous_days_text = array($lang['All_Topics'], $lang['1_Day'], $lang['7_Days'], $lang['2_Weeks'], $lang['1_Month'], $lang['3_Months'], $lang['6_Months'], $lang['1_Year']);
if (!empty($_POST['topicdays']) || !empty($_GET['topicdays'])) {
    $topic_days = intval(empty($_POST['topicdays']) ? $_GET['topicdays'] : $_POST['topicdays']);
    $min_topic_time = time() - $topic_days * 86400;
    $sql = "SELECT COUNT(t.topic_id) AS forum_topics\n\t\t\tFROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p\n\t\t\tWHERE t.forum_id = {$forum_id}\n\t\t\t\tAND p.post_id = t.topic_last_post_id\n\t\t\t\tAND p.post_time >= {$min_topic_time}";
    $result = $db->sql_query($sql);
    $row = $db->sql_fetchrow($result, SQL_ASSOC);
    $db->sql_freeresult($result);