Beispiel #1
0
// Parse and show the overall page header
global $page_cfg, $userdata, $user, $ft_cfg, $template, $lang, $images;
$logged_in = (int) (!empty($userdata['session_logged_in']));
// Generate logged in/logged out status
if ($logged_in) {
    $u_login_logout = FT_ROOT . LOGIN_URL . "?logout=1";
} else {
    $u_login_logout = FT_ROOT . LOGIN_URL;
}
if (defined('SHOW_ONLINE') && SHOW_ONLINE) {
    $online_full = !empty($_REQUEST['online_full']);
    $online_list = $online_full ? 'online_' . $userdata['user_lang'] : 'online_short_' . $userdata['user_lang'];
    ${$online_list} = array('stat' => '', 'userlist' => '', 'cnt' => '');
    if (defined('IS_GUEST') && !(IS_GUEST || IS_USER)) {
        $template->assign_var('SHOW_ONLINE_LIST');
        if (!(${$online_list} = CACHE('ft_cache')->get($online_list))) {
            require INC_DIR . 'show_online_list.php';
        }
    }
    $template->assign_vars(array('TOTAL_USERS_ONLINE' => ${$online_list}['stat'], 'LOGGED_IN_USER_LIST' => ${$online_list}['userlist'], 'USERS_ONLINE_COUNTS' => ${$online_list}['cnt'], 'RECORD_USERS' => sprintf($lang['RECORD_ONLINE_USERS'], $ft_cfg['record_online_users'], create_date($ft_cfg['default_dateformat'], $ft_cfg['record_online_date'], $ft_cfg['board_timezone']))));
}
// Obtain number of new private messages
if (@$userdata['session_logged_in'] && empty($gen_simple_header)) {
    if ($userdata['user_new_privmsg']) {
        $l_message_new = $userdata['user_new_privmsg'] == 1 ? $lang['New_pm'] : $lang['New_pms'];
        $l_privmsgs_text = sprintf($l_message_new, $userdata['user_new_privmsg']);
        if ($userdata['user_last_privmsg'] > $userdata['user_lastvisit']) {
            $sql = "UPDATE " . USERS_TABLE . "\r\n\t\t\t\tSET user_last_privmsg = " . $userdata['user_lastvisit'] . "\r\n\t\t\t\tWHERE user_id = " . $userdata['user_id'];
            if (!DB()->sql_query($sql)) {
                message_die(GENERAL_ERROR, 'Could not update private message new/read time for user', '', __LINE__, __FILE__, $sql);
            }
Beispiel #2
0
    } else {
        return $language;
    }
}
/**
* Get attachment mod configuration
*/
function get_config()
{
    global $bb_cfg;
    $attach_config = array();
    $sql = 'SELECT * FROM ' . BB_ATTACH_CONFIG;
    if (!($result = DB()->sql_query($sql))) {
        bb_die('Could not query attachment information');
    }
    while ($row = DB()->sql_fetchrow($result)) {
        $attach_config[$row['config_name']] = trim($row['config_value']);
    }
    // We assign the original default board language here, because it gets overwritten later with the users default language
    $attach_config['board_lang'] = trim($bb_cfg['default_lang']);
    return $attach_config;
}
// Get Attachment Config
$attach_config = array();
if (!($attach_config = CACHE('bb_cache')->get('attach_config'))) {
    $attach_config = get_config();
    CACHE('bb_cache')->set('attach_config', $attach_config, 86400);
}
include ATTACH_DIR . 'displaying.php';
include ATTACH_DIR . 'posting_attachments.php';
$upload_dir = $attach_config['upload_dir'];
Beispiel #3
0
            CACHE('bb_cache')->rm();
            $show_main_page = true;
            break;
        case 'cat_order':
            $move = (int) $_GET['move'];
            $cat_id = (int) $_GET['c'];
            DB()->query("\n\t\t\t\tUPDATE " . BB_CATEGORIES . " SET\n\t\t\t\t\tcat_order = cat_order + {$move}\n\t\t\t\tWHERE cat_id = {$cat_id}\n\t\t\t");
            renumber_order('category');
            $datastore->update('cat_forums');
            CACHE('bb_cache')->rm();
            $show_main_page = true;
            break;
        case 'forum_sync':
            sync('forum', intval($_GET['f']));
            $datastore->update('cat_forums');
            CACHE('bb_cache')->rm();
            $show_main_page = true;
            break;
        default:
            bb_die($lang['NO_MODE']);
            break;
    }
}
if (!$mode || $show_main_page) {
    $template->assign_vars(array('TPL_FORUMS_LIST' => true, 'S_FORUM_ACTION' => 'admin_forums.php', 'L_FORUM_TITLE' => $lang['FORUM_ADMIN_MAIN']));
    $sql = "SELECT cat_id, cat_title, cat_order FROM " . BB_CATEGORIES . " ORDER BY cat_order";
    if (!($q_categories = DB()->sql_query($sql))) {
        bb_die('Could not query categories list');
    }
    if ($total_categories = DB()->num_rows($q_categories)) {
        $category_rows = DB()->sql_fetchrowset($q_categories);
Beispiel #4
0
 /**
  * Log slow query
  */
 function log_slow_query($log_file = 'sql_slow_bb')
 {
     if (!defined('IN_FIRST_SLOW_QUERY') && CACHE('bb_cache')->get('dont_log_slow_query')) {
         return;
     }
     $this->log_query($log_file);
 }
Beispiel #5
0
        }
        $logged_online += count($users);
    }
    $online['userlist'] = join(",\n", $inline) . join("\n", $block);
    $online_short['userlist'] = join(",\n", $short);
}
if (!$online['userlist']) {
    $online['userlist'] = $online_short['userlist'] = $lang['NONE'];
} else {
    if (isset($_REQUEST['f'])) {
        $online['userlist'] = $online_short['userlist'] = $lang['BROWSING_FORUM'] . ' ' . $online['userlist'];
    }
}
$total_online = $logged_online + $guests_online;
if ($total_online > $bb_cfg['record_online_users']) {
    bb_update_config(array('record_online_users' => $total_online, 'record_online_date' => TIMENOW));
}
$online['stat'] = $online_short['stat'] = sprintf($lang['ONLINE_USERS'], $total_online, $logged_online, $guests_online);
$online['cnt'] = $online_short['cnt'] = <<<HTML
[
\t<span class="colorAdmin bold">{$users_cnt['admin']}</span> <span class="small">&middot;</span>
\t<span class="colorMod bold">{$users_cnt['mod']}</span> <span class="small">&middot;</span>
\t<span class="colorGroup bold">{$users_cnt['group_member']}</span> <span class="small">&middot;</span>
\t<span class="colorISL">{$users_cnt['ignore_load']}</span> <span class="small">&middot;</span>
\t<span>{$users_cnt['user']}</span> <span class="small">&middot;</span>
\t<span>{$users_cnt['guest']}</span>
]
HTML;
CACHE('bb_cache')->set('online_' . $userdata['user_lang'], $online, 60);
CACHE('bb_cache')->set('online_short_' . $userdata['user_lang'], $online_short, 60);
Beispiel #6
0
function cache_rm_user_sessions($user_id)
{
    $user_id = get_id_csv($user_id);
    $rowset = DB()->fetch_rowset("\n\t\tSELECT session_id FROM " . SESSIONS_TABLE . " WHERE session_user_id IN({$user_id})\n\t");
    foreach ($rowset as $row) {
        CACHE('session_cache')->rm($row['session_id']);
    }
}
Beispiel #7
0
 function delete_votes_data($topic_id)
 {
     DB()->query("DELETE FROM " . BB_POLL_VOTES . " WHERE topic_id = {$topic_id}");
     DB()->query("DELETE FROM " . BB_POLL_USERS . " WHERE topic_id = {$topic_id}");
     CACHE('bb_poll_data')->rm("poll_{$topic_id}");
 }
            }
            $sql = "UPDATE " . BB_ATTACH_CONFIG . "\n\t\t\t\tSET\tconfig_value = '" . attach_mod_sql_escape($new_attach[$config_name]) . "'\n\t\t\t\tWHERE config_name = '" . attach_mod_sql_escape($config_name) . "'";
        } else {
            $sql = "UPDATE " . BB_ATTACH_CONFIG . "\n\t\t\t\tSET\tconfig_value = '" . attach_mod_sql_escape($new_attach[$config_name]) . "'\n\t\t\t\tWHERE config_name = '" . attach_mod_sql_escape($config_name) . "'";
        }
        if (!DB()->sql_query($sql)) {
            bb_die('Failed to update attachment configuration for ' . $config_name);
        }
        if ($config_name == 'max_filesize' || $config_name == 'attachment_quota' || $config_name == 'max_filesize_pm') {
            $new_attach[$config_name] = $old;
        }
    }
}
DB()->sql_freeresult($result);
// Clear cached config
CACHE('bb_cache')->rm('attach_config');
$select_size_mode = size_select('size', $size);
$select_quota_size_mode = size_select('quota_size', $quota_size);
$select_pm_size_mode = size_select('pm_size', $pm_size);
// Search Imagick
if ($search_imagick) {
    $imagick = '';
    if (preg_match('/convert/i', $imagick)) {
        return true;
    } else {
        if ($imagick != 'none') {
            if (!preg_match('/WIN/i', PHP_OS)) {
                $retval = @exec('whereis convert');
                $paths = explode(' ', $retval);
                if (is_array($paths)) {
                    for ($i = 0; $i < sizeof($paths); $i++) {
Beispiel #9
0
            }
            if (!($result = DB()->sql_query($sql))) {
                bb_die('Could not insert data into words table');
            }
            CACHE('bb_cache')->rm('censored');
            $message .= '<br /><br />' . sprintf($lang['CLICK_RETURN_WORDADMIN'], '<a href="admin_words.php">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
            bb_die($message);
        } else {
            if ($mode == 'delete') {
                $word_id = intval(request_var('id', 0));
                if ($word_id) {
                    $sql = "DELETE FROM " . BB_WORDS . " WHERE word_id = {$word_id}";
                    if (!($result = DB()->sql_query($sql))) {
                        bb_die('Could not remove data from words table');
                    }
                    CACHE('bb_cache')->rm('censored');
                    bb_die($lang['WORD_REMOVED'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_WORDADMIN'], '<a href="admin_words.php">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
                } else {
                    bb_die($lang['NO_WORD_SELECTED']);
                }
            }
        }
    }
} else {
    $sql = "SELECT * FROM " . BB_WORDS . " ORDER BY word";
    if (!($result = DB()->sql_query($sql))) {
        bb_die('Could not query words table #2');
    }
    $word_rows = DB()->sql_fetchrowset($result);
    $word_count = count($word_rows);
    $template->assign_vars(array('TPL_ADMIN_WORDS_LIST' => true, 'S_WORDS_ACTION' => 'admin_words.php', 'S_HIDDEN_FIELDS' => ''));
Beispiel #10
0
<?php

require './pagestart.php';
// Generate relevant output
if (isset($_GET['pane']) && $_GET['pane'] == 'left') {
    if (!($module = CACHE('bb_cache')->get('admin_module'))) {
        $dir = @opendir('.');
        $setmodules = 1;
        while ($file = @readdir($dir)) {
            if (preg_match('/^admin_.*?\\.php$/', $file)) {
                include './' . $file;
            }
        }
        unset($setmodules);
        @closedir($dir);
        CACHE('bb_cache')->set('admin_module', $module, 600);
    }
    $template->assign_vars(array('TPL_ADMIN_NAVIGATE' => true, 'U_FORUM_INDEX' => '../index.php', 'U_ADMIN_INDEX' => 'index.php?pane=right'));
    ksort($module);
    while (list($cat, $action_array) = each($module)) {
        $cat = !empty($lang[$cat]) ? $lang[$cat] : preg_replace('/_/', ' ', $cat);
        $template->assign_block_vars('catrow', array('ADMIN_CATEGORY' => $cat));
        ksort($action_array);
        $row_count = 0;
        while (list($action, $file) = each($action_array)) {
            $row_class = !($row_count % 2) ? 'row1' : 'row2';
            $action = !empty($lang[$action]) ? $lang[$action] : preg_replace('/_/', ' ', $action);
            $template->assign_block_vars('catrow.modulerow', array('ROW_CLASS' => $row_class, 'ADMIN_MODULE' => $action, 'U_ADMIN_MODULE' => $file));
            $row_count++;
        }
    }
Beispiel #11
0
    if (!$login_errors) {
        if ($user->login($_POST, $mod_admin_login)) {
            $redirect_url = defined('FIRST_LOGON') ? $bb_cfg['first_logon_redirect_url'] : $redirect_url;
            // Обнуление при введении правильно комбинации логин/пароль
            CACHE('bb_login_err')->set('l_err_' . USER_IP, 0, 3600);
            if ($redirect_url == '/' . LOGIN_URL || $redirect_url == LOGIN_URL) {
                $redirect_url = 'index.php';
            }
            redirect($redirect_url);
        }
        $login_errors[] = $lang['ERROR_LOGIN'];
        if (!$mod_admin_login) {
            $login_err = CACHE('bb_login_err')->get('l_err_' . USER_IP);
            if ($login_err > $bb_cfg['invalid_logins']) {
                $need_captcha = true;
            }
            if ($login_err > 50) {
                // TODO temp ban ip
            }
            CACHE('bb_login_err')->set('l_err_' . USER_IP, $login_err + 1, 3600);
        } else {
            $need_captcha = false;
        }
    }
}
// Login page
if (IS_GUEST || $mod_admin_login) {
    $template->assign_vars(array('LOGIN_USERNAME' => htmlCHR($login_username), 'LOGIN_PASSWORD' => htmlCHR($login_password), 'ERROR_MESSAGE' => join('<br />', $login_errors), 'ADMIN_LOGIN' => $mod_admin_login, 'REDIRECT_URL' => htmlCHR($redirect_url), 'CAPTCHA_HTML' => $need_captcha && !$bb_cfg['captcha']['disabled'] ? bb_captcha('get') : '', 'PAGE_TITLE' => $lang['LOGIN'], 'S_LOGIN_ACTION' => LOGIN_URL));
    print_page('login.tpl');
}
redirect($redirect_url);
Beispiel #12
0
function caching_output($enabled, $mode, $cache_var_name, $ttl = 300)
{
    if (!$enabled || !CACHE('ft_cache')->used) {
        return;
    }
    if ($mode == 'send') {
        if ($cached_contents = CACHE('ft_cache')->get($cache_var_name)) {
            ft_exit($cached_contents);
        }
    } else {
        if ($mode == 'store') {
            if ($output = ob_get_contents()) {
                CACHE('ft_cache')->set($cache_var_name, $output, $ttl);
            }
        }
    }
}
Beispiel #13
0
<?php

if (!defined('IN_AJAX')) {
    die(basename(__FILE__));
}
global $userdata, $lang, $bb_cfg;
$mode = (string) $this->request['mode'];
switch ($mode) {
    case 'clear_cache':
        foreach ($bb_cfg['cache']['engines'] as $cache_name => $cache_val) {
            if (!in_array('db_sqlite', $cache_val)) {
                CACHE($cache_name)->rm();
            }
        }
        $this->response['cache_html'] = '<span class="seed bold">' . $lang['ALL_CACHE_CLEARED'] . '</span>';
        break;
    case 'clear_datastore':
        global $datastore;
        $datastore->clean();
        $this->response['datastore_html'] = '<span class="seed bold">' . $lang['DATASTORE_CLEARED'] . '</span>';
        break;
    case 'clear_template_cache':
        global $template;
        $match = 'tpl_';
        $match_len = strlen($match);
        $dir = $template->cachedir;
        $res = @opendir($dir);
        while (($file = readdir($res)) !== false) {
            if (substr($file, 0, $match_len) === $match) {
                @unlink($dir . $file);
            }
Beispiel #14
0
    $numwant = (int) $tr_cfg['numwant'];
    $compact_mode = $tr_cfg['compact_mode'] || !empty($compact);
    $rowset = DB()->fetch_rowset("\n\t\tSELECT ip, port\n\t\tFROM " . BB_BT_TRACKER . "\n\t\tWHERE topic_id = {$topic_id}\n\t\tORDER BY RAND()\n\t\tLIMIT {$numwant}\n\t");
    if ($compact_mode) {
        $peers = '';
        foreach ($rowset as $peer) {
            $peers .= pack('Nn', ip2long(decode_ip($peer['ip'])), $peer['port']);
        }
    } else {
        $peers = array();
        foreach ($rowset as $peer) {
            $peers[] = array('ip' => decode_ip($peer['ip']), 'port' => intval($peer['port']));
        }
    }
    $seeders = 0;
    $leechers = 0;
    if ($tr_cfg['scrape']) {
        $row = DB()->fetch_row("\n\t\t\tSELECT seeders, leechers\n\t\t\tFROM " . BB_BT_TRACKER_SNAP . "\n\t\t\tWHERE topic_id = {$topic_id}\n\t\t\tLIMIT 1\n\t\t");
        $seeders = $row['seeders'];
        $leechers = $row['leechers'];
    }
    $output = array('interval' => (int) $announce_interval, 'min interval' => (int) $announce_interval, 'peers' => $peers, 'complete' => (int) $seeders, 'incomplete' => (int) $leechers);
    $peers_list_cached = CACHE('tr_cache')->set(PEERS_LIST_PREFIX . $topic_id, $output, PEERS_LIST_EXPIRE);
    if (DBG_LOG && !$peers_list_cached) {
        dbg_log(' ', '$output-caching-FAIL');
    }
}
// Return data to client
echo bencode($output);
tracker_exit();
exit;
Beispiel #15
0
<?php

if (!defined('BB_ROOT')) {
    die(basename(__FILE__));
}
global $cron_runtime_log;
foreach ($bb_cfg['cache']['engines'] as $cache_name => $cache_val) {
    if (method_exists(CACHE($cache_name), 'gc')) {
        $changes = CACHE($cache_name)->gc();
        $cron_runtime_log = date('Y-m-d H:i:s') . " -- " . str_pad("{$cache_name} ", 25, '-', STR_PAD_RIGHT) . " del: {$changes}\n";
    }
}
Beispiel #16
0
                }
            }
            if ($show_subforums && $row['show_on_index']) {
                $parent['last_sf_id'] = $forum_id;
            } else {
                continue;
            }
        } else {
            $f =& $forums['f'][$forum_id];
            $row['forum_desc'] = $f['forum_desc'];
            $row['forum_posts'] = $f['forum_posts'];
            $row['forum_topics'] = $f['forum_topics'];
        }
        $cat_forums[$cat_id]['f'][$forum_id] = $row;
    }
    CACHE('bb_cache')->set($cache_name, $cat_forums, 180);
    unset($row, $forums);
    $datastore->rm('cat_forums');
}
// Obtain list of moderators
$moderators = array();
if (!($mod = $datastore->get('moderators'))) {
    $datastore->update('moderators');
    $mod = $datastore->get('moderators');
}
if (!empty($mod)) {
    foreach ($mod['mod_users'] as $forum_id => $user_ids) {
        foreach ($user_ids as $user_id) {
            $moderators[$forum_id][] = '<a href="' . PROFILE_URL . $user_id . '">' . $mod['name_users'][$user_id] . '</a>';
        }
    }