Example #1
0
 $i = 0;
 $template->assign_vars(array('ROW_NUMBER' => $i + ($start + 1), 'GROUP_INFO' => true, 'PAGE_TITLE' => $lang['GROUP_CONTROL_PANEL'], 'GROUP_NAME' => htmlCHR($group_info['group_name']), 'GROUP_DESCRIPTION' => bbcode2html($group_info['group_description']), 'GROUP_SIGNATURE' => bbcode2html($group_info['group_signature']), 'GROUP_AVATAR' => get_avatar(GROUP_AVATAR_MASK . $group_id, $group_info['avatar_ext_id'], true), 'GROUP_DETAILS' => $group_details, 'GROUP_TIME' => !empty($group_info['group_time']) ? sprintf('%s <span class="posted_since">(%s)</span>', bb_date($group_info['group_time']), delta_time($group_info['group_time'])) : $lang['NONE'], 'MOD_USER' => profile_url($group_moderator), 'MOD_AVATAR' => $avatar, 'MOD_FROM' => $from, 'MOD_JOINED' => $joined, 'MOD_POSTS' => $posts, 'MOD_PM' => $pm, 'MOD_EMAIL' => $email, 'MOD_WWW' => $www, 'MOD_TIME' => !empty($group_info['mod_time']) ? bb_date($group_info['mod_time']) : $lang['NONE'], 'U_SEARCH_USER' => "search.php?mode=searchuser", 'U_SEARCH_RELEASES' => "tracker.php?srg={$group_id}", 'U_GROUP_RELEASES' => "group.php?view=releases&amp;" . POST_GROUPS_URL . "={$group_id}", 'U_GROUP_MEMBERS' => "group.php?view=members&amp;" . POST_GROUPS_URL . "={$group_id}", 'U_GROUP_CONFIG' => "group_edit.php?g={$group_id}", 'RELEASE_GROUP' => $group_info['release_group'] ? true : false, 'GROUP_TYPE' => $group_type, 'S_GROUP_OPEN_TYPE' => GROUP_OPEN, 'S_GROUP_CLOSED_TYPE' => GROUP_CLOSED, 'S_GROUP_HIDDEN_TYPE' => GROUP_HIDDEN, 'S_GROUP_OPEN_CHECKED' => $group_info['group_type'] == GROUP_OPEN ? ' checked="checked"' : '', 'S_GROUP_CLOSED_CHECKED' => $group_info['group_type'] == GROUP_CLOSED ? ' checked="checked"' : '', 'S_GROUP_HIDDEN_CHECKED' => $group_info['group_type'] == GROUP_HIDDEN ? ' checked="checked"' : '', 'S_HIDDEN_FIELDS' => $s_hidden_fields, 'S_MODE_SELECT' => $select_sort_mode, 'S_ORDER_SELECT' => $select_sort_order, 'S_GROUP_ACTION' => "group.php?" . POST_GROUPS_URL . "={$group_id}"));
 switch ($view_mode) {
     case 'releases':
         // TODO Correct SQL to posts with attach and limit them, optimization
         if (!$group_info['release_group']) {
             set_die_append_msg(false, false, $group_id);
             bb_die($lang['NOT_A_RELEASE_GROUP']);
         }
         // Count releases for pagination
         $all_releases = DB()->fetch_rowset("\n\t\t\t\tSELECT p.topic_id, p.forum_id, p.poster_id, t.topic_title, t.topic_time, f.forum_name, u.username, u.avatar_ext_id, u.user_opt, u.user_rank\n\t\t\t\tFROM " . BB_POSTS . " p\n\t\t\t\tLEFT JOIN " . BB_TOPICS . " t ON(p.topic_id = t.topic_id)\n\t\t\t\tLEFT JOIN " . BB_FORUMS . " f ON(p.forum_id= f.forum_id)\n\t\t\t\tLEFT JOIN " . BB_USERS . " u ON(p.poster_id = u.user_id)\n\t\t\t\tWHERE p.poster_rg_id = {$group_id}\n\t\t\t\tORDER BY t.topic_time DESC\n\t\t\t\tLIMIT {$rel_limit}\n\t\t\t");
         $count_releases = count($all_releases);
         generate_pagination(GROUP_URL . $group_id . "&amp;view=releases", $count_releases, $per_page, $start);
         $sql = "\n\t\t\t\tSELECT p.topic_id, p.forum_id, p.poster_id, t.topic_title, t.topic_time, f.forum_name, u.username, u.avatar_ext_id, u.user_opt, u.user_rank\n\t\t\t\tFROM " . BB_POSTS . " p\n\t\t\t\tLEFT JOIN " . BB_TOPICS . " t ON(p.topic_id = t.topic_id)\n\t\t\t\tLEFT JOIN " . BB_FORUMS . " f ON(p.forum_id= f.forum_id)\n\t\t\t\tLEFT JOIN " . BB_USERS . " u ON(p.poster_id = u.user_id)\n\t\t\t\tWHERE p.poster_rg_id = {$group_id}\n\t\t\t\tORDER BY t.topic_time DESC\n\t\t\t\tLIMIT {$start}, {$per_page}\n\t\t\t";
         if (!($releases = DB()->fetch_rowset($sql))) {
             set_die_append_msg(false, false, $group_id);
             bb_die($lang['NO_SEARCH_MATCH']);
         }
         foreach ($releases as $i => $release) {
             $row_class = !($i % 2) ? 'row1' : 'row2';
             $template->assign_block_vars('releases', array('ROW_NUMBER' => $i + ($start + 1), 'ROW_CLASS' => $row_class, 'RELEASER' => profile_url(array('user_id' => $release['poster_id'], 'username' => $release['username'], 'user_rank' => $release['user_rank'])), 'AVATAR_IMG' => get_avatar($release['poster_id'], $release['avatar_ext_id'], !bf($release['user_opt'], 'user_opt', 'dis_avatar'), '', 50, 50), 'RELEASE_NAME' => sprintf('<a href="%s">%s</a>', TOPIC_URL . $release['topic_id'], htmlCHR($release['topic_title'])), 'RELEASE_TIME' => bb_date($release['topic_time']), 'RELEASE_FORUM' => sprintf('<a href="%s">%s</a>', FORUM_URL . $release['forum_id'], htmlCHR($release['forum_name']))));
         }
         $template->assign_vars(array('RELEASES' => true));
         break;
     case 'members':
     default:
         // Members
         $count_members = DB()->fetch_rowset("\n\t\t\t\tSELECT u.username, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time\n\t\t\t\tFROM " . BB_USER_GROUP . " ug, " . BB_USERS . " u\n\t\t\t\tWHERE ug.group_id = {$group_id}\n\t\t\t\t\tAND ug.user_pending = 0\n\t\t\t\t\tAND ug.user_id <> " . $group_moderator['user_id'] . "\n\t\t\t\t\tAND u.user_id = ug.user_id\n\t\t\t\tORDER BY u.username\n\t\t\t");
         $count_members = count($count_members);
         // Get user information for this group
         $modgroup_pending_count = 0;
Example #2
0
<?php

define('IN_FORUM', true);
define('BB_ROOT', './');
require BB_ROOT . 'common.php';
$user->session_start();
set_die_append_msg();
if (!IS_SUPER_ADMIN) {
    bb_die($lang['ONLY_FOR_SUPER_ADMIN']);
}
$confirm = request_var('confirm', '');
if ($confirm) {
    DB()->query("\n\t\tCREATE TEMPORARY TABLE tmp_buf_dlstatus (\n\t\t\tuser_id      mediumint(9)          NOT NULL default '0',\n\t\t\ttopic_id     mediumint(8) unsigned NOT NULL default '0',\n\t\t\tuser_status  tinyint(1)            NOT NULL default '0',\n\t\t\tPRIMARY KEY (user_id, topic_id)\n\t\t) ENGINE = MyISAM\n\t");
    DB()->query("\n\t\tINSERT INTO tmp_buf_dlstatus\n\t\t\t(user_id, topic_id, user_status)\n\t\tSELECT\n\t\t\tuser_id, topic_id, user_status\n\t\tFROM bb_bt_dlstatus_new\n\t");
    DB()->query("\n\t\tREPLACE INTO bb_bt_dlstatus_main\n\t\t\t(user_id, topic_id, user_status)\n\t\tSELECT\n\t\t\tuser_id, topic_id, user_status\n\t\tFROM tmp_buf_dlstatus\n\t");
    DB()->query("DROP TEMPORARY TABLE IF EXISTS tmp_buf_dlstatus");
    DB()->query("RENAME TABLE bb_bt_dlstatus_main TO bb_bt_dlstatus");
    DB()->query("DROP TABLE IF EXISTS bb_bt_dlstatus_mrg");
    DB()->query("DROP TABLE IF EXISTS bb_bt_dlstatus_new");
    bb_die('<h1 style="color: green">База данных обновлена</h1>');
} else {
    $msg = '<form method="POST">';
    $msg .= '<h1 style="color: red">!!! Перед тем как нажать на кнопку, сделайте бекап базы данных !!!</h1><br />';
    $msg .= '<input type="submit" name="confirm" value="Начать обновление Базы Данных (R571)" style="height: 30px; font:bold 14px Arial, Helvetica, sans-serif;" />';
    $msg .= '</form>';
    bb_die($msg);
}
Example #3
0
<?php

define('IN_FORUM', true);
define('BB_SCRIPT', 'callseed');
define('BB_ROOT', './');
require BB_ROOT . 'common.php';
// Init userdata
$user->session_start(array('req_login' => true));
$topic_id = (int) request_var('t', 0);
$t_data = topic_info($topic_id);
$forum_id = $t_data['forum_id'];
set_die_append_msg($forum_id, $topic_id);
if ($t_data['seeders'] > 2) {
    bb_die(sprintf($lang['CALLSEED_HAVE_SEED'], $t_data['seeders']));
} elseif ($t_data['call_seed_time'] > TIMENOW - 86400) {
    $time_left = delta_time($t_data['call_seed_time'] + 86400, TIMENOW, 'days');
    bb_die(sprintf($lang['CALLSEED_MSG_SPAM'], $time_left));
}
$ban_user_id = array();
$sql = DB()->fetch_rowset("SELECT ban_userid FROM " . BB_BANLIST . " WHERE ban_userid != 0");
foreach ($sql as $row) {
    $ban_user_id[] = ',' . $row['ban_userid'];
}
$ban_user_id = join('', $ban_user_id);
$user_list = DB()->fetch_rowset("\n\tSELECT DISTINCT dl.user_id, u.user_opt, tr.user_id as active_dl\n\tFROM " . BB_BT_DLSTATUS . " dl\n\tLEFT JOIN " . BB_USERS . " u  ON(u.user_id = dl.user_id)\n\tLEFT JOIN " . BB_BT_TRACKER . " tr ON(tr.user_id = dl.user_id)\n\tWHERE dl.topic_id = {$topic_id}\n\t\tAND dl.user_status IN (" . DL_STATUS_COMPLETE . ", " . DL_STATUS_DOWN . ")\n\t\tAND dl.user_id NOT IN ({$userdata['user_id']}, " . EXCLUDED_USERS_CSV . $ban_user_id . ")\n\t\tAND u.user_active = 1\n\tGROUP BY dl.user_id\n");
$subject = sprintf($lang['CALLSEED_SUBJECT'], $t_data['topic_title']);
$message = sprintf($lang['CALLSEED_TEXT'], make_url(TOPIC_URL . $topic_id), $t_data['topic_title'], make_url(DOWNLOAD_URL . $t_data['attach_id']));
if ($user_list) {
    foreach ($user_list as $row) {
        if (!empty($row['active_dl'])) {
            continue;
Example #4
0
function delete_post($mode, $post_data, &$message, &$meta, $forum_id, $topic_id, $post_id)
{
    global $lang;
    $message = $lang['DELETED'];
    post_delete($post_id);
    set_die_append_msg($forum_id, $topic_id);
}
Example #5
0
        $tor_status = (int) $_REQUEST['tst'];
        // reset other req values
        unset($_REQUEST['sort'], $_REQUEST['order'], $_REQUEST[$title_match_key]);
        $show_type_separator = false;
    }
    $select_tst = array_merge(array($lang['TOR_STATUS_SELECT_ALL'] => -1), array_flip($lang['TOR_STATUS_NAME']));
    $template->assign_vars(array('SELECT_TST' => build_select('tst', $select_tst, $tor_status)));
    $select_st = array_merge(array($lang['TOR_STATUS_SELECT_ACTION'] => -1), array_flip($lang['TOR_STATUS_NAME']));
    $template->assign_vars(array('SELECT_ST' => build_select('st', $select_st, -1)));
}
// Topics read tracks
$tracking_topics = get_tracks('topic');
$tracking_forums = get_tracks('forum');
if ($mark_read && !IS_GUEST) {
    set_tracks(COOKIE_FORUM, $tracking_forums, $forum_id);
    set_die_append_msg($forum_id);
    $message = $lang['TOPICS_MARKED_READ'];
    bb_die($message);
}
// Subforums
$show_subforums = $bb_cfg['sf_on_first_page_only'] ? !$start : true;
if (!($forums = $datastore->get('cat_forums'))) {
    $datastore->update('cat_forums');
    $forums = $datastore->get('cat_forums');
}
if ($forums['forum'][$forum_id]['allow_porno_topic'] && bf($userdata['user_opt'], 'user_opt', 'user_porn_forums')) {
    bb_die($lang['ERROR_PORNO_FORUM']);
}
if (!$forum_data['forum_parent'] && isset($forums['f'][$forum_id]['subforums']) && $show_subforums) {
    $not_auth_forums = $user->get_excluded_forums(AUTH_VIEW);
    $ignore_forum_sql = $not_auth_forums ? "AND f.forum_id NOT IN({$not_auth_forums})" : '';
Example #6
0
function tracker_register($attach_id, $mode = '', $tor_status = TOR_NOT_APPROVED, $reg_time = TIMENOW)
{
    global $bb_cfg, $lang, $reg_mode, $tr_cfg;
    $attach_id = intval($attach_id);
    $reg_mode = $mode;
    if (!($torrent = get_torrent_info($attach_id))) {
        bb_die($lang['TOR_NOT_FOUND']);
    }
    $post_id = $torrent['post_id'];
    $topic_id = $torrent['topic_id'];
    $forum_id = $torrent['forum_id'];
    $poster_id = $torrent['poster_id'];
    $info_hash = null;
    if ($torrent['extension'] !== TORRENT_EXT) {
        return torrent_error_exit($lang['NOT_TORRENT']);
    }
    if (!$torrent['allow_reg_tracker']) {
        return torrent_error_exit($lang['REG_NOT_ALLOWED_IN_THIS_FORUM']);
    }
    if ($post_id != $torrent['topic_first_post_id']) {
        return torrent_error_exit($lang['ALLOWED_ONLY_1ST_POST_REG']);
    }
    if ($torrent['tracker_status']) {
        return torrent_error_exit($lang['ALREADY_REG']);
    }
    if ($this_topic_torrents = get_registered_torrents($topic_id, 'topic')) {
        return torrent_error_exit($lang['ONLY_1_TOR_PER_TOPIC']);
    }
    torrent_auth_check($forum_id, $torrent['poster_id']);
    $filename = get_attachments_dir() . '/' . $torrent['physical_filename'];
    if (!is_file($filename)) {
        return torrent_error_exit('File name error');
    }
    if (!file_exists($filename)) {
        return torrent_error_exit('File not exists');
    }
    if (!($tor = bdecode_file($filename))) {
        return torrent_error_exit('This is not a bencoded file');
    }
    if ($bb_cfg['bt_disable_dht']) {
        $tor['info']['private'] = (int) 1;
        $fp = fopen($filename, 'w+');
        fwrite($fp, bencode($tor));
        fclose($fp);
    }
    if ($bb_cfg['bt_check_announce_url']) {
        include INC_DIR . 'torrent_announce_urls.php';
        $ann = @$tor['announce'] ? $tor['announce'] : '';
        $announce_urls['main_url'] = $bb_cfg['bt_announce_url'];
        if (!$ann || !in_array($ann, $announce_urls)) {
            $msg = sprintf($lang['INVALID_ANN_URL'], htmlspecialchars($ann), $announce_urls['main_url']);
            return torrent_error_exit($msg);
        }
    }
    $info = @$tor['info'] ? $tor['info'] : array();
    if (!isset($info['name']) || !isset($info['piece length']) || !isset($info['pieces']) || strlen($info['pieces']) % 20 != 0) {
        return torrent_error_exit($lang['TORFILE_INVALID']);
    }
    $info_hash = pack('H*', sha1(bencode($info)));
    $info_hash_sql = rtrim(DB()->escape($info_hash), ' ');
    $info_hash_md5 = md5($info_hash);
    // Ocelot
    if ($bb_cfg['ocelot']['enabled']) {
        ocelot_update_tracker('add_torrent', array('info_hash' => rawurlencode($info_hash), 'id' => $topic_id, 'freetorrent' => 0));
    }
    if ($row = DB()->fetch_row("SELECT topic_id FROM " . BB_BT_TORRENTS . " WHERE info_hash = '{$info_hash_sql}' LIMIT 1")) {
        $msg = sprintf($lang['BT_REG_FAIL_SAME_HASH'], TOPIC_URL . $row['topic_id']);
        bb_die($msg);
        set_die_append_msg($forum_id, $topic_id);
    }
    $totallen = 0;
    if (isset($info['length'])) {
        $totallen = (double) $info['length'];
    } else {
        if (isset($info['files']) && is_array($info['files'])) {
            foreach ($info['files'] as $fn => $f) {
                $totallen += (double) $f['length'];
            }
        } else {
            return torrent_error_exit($lang['TORFILE_INVALID']);
        }
    }
    $size = sprintf('%.0f', (double) $totallen);
    $columns = ' info_hash,       post_id,  poster_id,  topic_id,  forum_id,  attach_id,    size,  reg_time,  tor_status';
    $values = "'{$info_hash_sql}', {$post_id}, {$poster_id}, {$topic_id}, {$forum_id}, {$attach_id}, '{$size}', {$reg_time}, {$tor_status}";
    $sql = "INSERT INTO " . BB_BT_TORRENTS . " ({$columns}) VALUES ({$values})";
    if (!DB()->sql_query($sql)) {
        $sql_error = DB()->sql_error();
        if ($sql_error['code'] == 1062) {
            return torrent_error_exit($lang['BT_REG_FAIL_SAME_HASH']);
        }
        bb_die('Could not register torrent on tracker');
    }
    // update tracker status for this attachment
    $sql = 'UPDATE ' . BB_ATTACHMENTS_DESC . " SET tracker_status = 1 WHERE attach_id = {$attach_id} LIMIT 1";
    if (!DB()->sql_query($sql)) {
        bb_die('Could not update torrent status #2');
    }
    // set DL-Type for topic
    if ($bb_cfg['bt_set_dltype_on_tor_reg']) {
        $sql = 'UPDATE ' . BB_TOPICS . ' SET topic_dl_type = ' . TOPIC_DL_TYPE_DL . " WHERE topic_id = {$topic_id} LIMIT 1";
        if (!($result = DB()->sql_query($sql))) {
            bb_die('Could not update topics table #2');
        }
    }
    if ($tr_cfg['tor_topic_up']) {
        DB()->query("UPDATE " . BB_TOPICS . " SET topic_last_post_time = GREATEST(topic_last_post_time, " . (TIMENOW - 3 * 86400) . ") WHERE topic_id = {$topic_id} LIMIT 1");
    }
    if ($reg_mode == 'request' || $reg_mode == 'newtopic') {
        set_die_append_msg($forum_id, $topic_id);
        $mess = sprintf($lang['BT_REGISTERED'], DOWNLOAD_URL . $attach_id);
        bb_die($mess);
    }
    return;
}