Merge pull request #301 from Exile37/feature/environments

Cron subsystem rework. Environments
This commit is contained in:
Yuriy Pikhtarev 2017-06-10 12:03:11 +03:00 committed by GitHub
commit 8bac810833
91 changed files with 865 additions and 834 deletions

12
.env.example Normal file
View file

@ -0,0 +1,12 @@
# Common params
APP_NAME=TorrentPier
APP_ENV=local
APP_DEBUG=false
# Database credentials
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=torrentpier
DB_USERNAME=root
DB_PASSWORD=secret

2
.gitignore vendored
View file

@ -1,11 +1,11 @@
### TorrentPier ### ### TorrentPier ###
.idea .idea
.php_cs.cache
bower_components bower_components
composer.phar composer.phar
composer.lock composer.lock
configs/local.php configs/local.php
data/avatars data/avatars
data/old_files
data/torrent_files data/torrent_files
internal_data/ajax_html internal_data/ajax_html
internal_data/atom internal_data/atom

View file

@ -67,20 +67,20 @@ $default_cfg_num = array(
); );
// Set template vars // Set template vars
set_tpl_vars($default_cfg_str, $tr_cfg); set_tpl_vars($default_cfg_str, $bb_cfg['tracker']);
set_tpl_vars_lang($default_cfg_str); set_tpl_vars_lang($default_cfg_str);
set_tpl_vars_bool($default_cfg_bool, $tr_cfg); set_tpl_vars_bool($default_cfg_bool, $bb_cfg['tracker']);
set_tpl_vars_lang($default_cfg_bool); set_tpl_vars_lang($default_cfg_bool);
set_tpl_vars($default_cfg_num, $tr_cfg); set_tpl_vars($default_cfg_num, $bb_cfg['tracker']);
set_tpl_vars_lang($default_cfg_num); set_tpl_vars_lang($default_cfg_num);
$template->assign_vars(array( $template->assign_vars(array(
'IGNORE_REPORTED_IP' => $bb_cfg['ignore_reported_ip'], 'IGNORE_REPORTED_IP' => $bb_cfg['ignore_reported_ip'],
'ANNOUNCE_INTERVAL' => $bb_cfg['announce_interval'], 'ANNOUNCE_INTERVAL' => $bb_cfg['announce_interval'],
'PASSKEY_KEY' => $bb_cfg['passkey_key'], 'PASSKEY_KEY' => $bb_cfg['passkey_key'],
'GOLD_SILVER_ENABLED' => $tr_cfg['gold_silver_enabled'], 'GOLD_SILVER_ENABLED' => $bb_cfg['tracker']['gold_silver_enabled'],
'DISABLE_SUBMIT' => true, 'DISABLE_SUBMIT' => true,
'S_HIDDEN_FIELDS' => '', 'S_HIDDEN_FIELDS' => '',

View file

@ -32,6 +32,7 @@ require __DIR__ . '/pagestart.php';
$datastore->enqueue(array( $datastore->enqueue(array(
'moderators', 'moderators',
'cat_forums',
)); ));
$log_action->init(); $log_action->init();

View file

@ -27,7 +27,7 @@ define('IN_TRACKER', true);
define('BB_ROOT', './../'); define('BB_ROOT', './../');
require dirname(__DIR__) . '/common.php'; require dirname(__DIR__) . '/common.php';
global $bb_cfg, $tr_cfg; global $bb_cfg;
if (empty($_SERVER['HTTP_USER_AGENT'])) { if (empty($_SERVER['HTTP_USER_AGENT'])) {
header('Location: http://127.0.0.1', true, 301); header('Location: http://127.0.0.1', true, 301);
@ -249,15 +249,15 @@ if ($lp_info) {
$tor_type = $row['tor_type']; $tor_type = $row['tor_type'];
// Ratio limits // Ratio limits
if ((TR_RATING_LIMITS || $tr_cfg['limit_concurrent_ips']) && !$stopped) { if ((TR_RATING_LIMITS || $bb_cfg['tracker']['limit_concurrent_ips']) && !$stopped) {
$user_ratio = ($row['u_down_total'] && $row['u_down_total'] > MIN_DL_FOR_RATIO) ? ($row['u_up_total'] + $row['u_up_release'] + $row['u_up_bonus']) / $row['u_down_total'] : 1; $user_ratio = ($row['u_down_total'] && $row['u_down_total'] > MIN_DL_FOR_RATIO) ? ($row['u_up_total'] + $row['u_up_release'] + $row['u_up_bonus']) / $row['u_down_total'] : 1;
$rating_msg = ''; $rating_msg = '';
if (!$seeder) { if (!$seeder) {
foreach ($rating_limits as $ratio => $limit) { foreach ($bb_cfg['rating'] as $ratio => $limit) {
if ($user_ratio < $ratio) { if ($user_ratio < $ratio) {
$tr_cfg['limit_active_tor'] = 1; $bb_cfg['tracker']['limit_active_tor'] = 1;
$tr_cfg['limit_leech_count'] = $limit; $bb_cfg['tracker']['limit_leech_count'] = $limit;
$rating_msg = " (ratio < $ratio)"; $rating_msg = " (ratio < $ratio)";
break; break;
} }
@ -265,29 +265,29 @@ if ($lp_info) {
} }
// Limit active torrents // Limit active torrents
if (!isset($bb_cfg['unlimited_users'][$user_id]) && $tr_cfg['limit_active_tor'] && (($tr_cfg['limit_seed_count'] && $seeder) || ($tr_cfg['limit_leech_count'] && !$seeder))) { if (!isset($bb_cfg['unlimited_users'][$user_id]) && $bb_cfg['tracker']['limit_active_tor'] && (($bb_cfg['tracker']['limit_seed_count'] && $seeder) || ($bb_cfg['tracker']['limit_leech_count'] && !$seeder))) {
$sql = "SELECT COUNT(DISTINCT topic_id) AS active_torrents $sql = "SELECT COUNT(DISTINCT topic_id) AS active_torrents
FROM " . BB_BT_TRACKER . " FROM " . BB_BT_TRACKER . "
WHERE user_id = $user_id WHERE user_id = $user_id
AND seeder = $seeder AND seeder = $seeder
AND topic_id != $topic_id"; AND topic_id != $topic_id";
if (!$seeder && $tr_cfg['leech_expire_factor'] && $user_ratio < 0.5) { if (!$seeder && $bb_cfg['tracker']['leech_expire_factor'] && $user_ratio < 0.5) {
$sql .= " AND update_time > " . (TIMENOW - 60 * $tr_cfg['leech_expire_factor']); $sql .= " AND update_time > " . (TIMENOW - 60 * $bb_cfg['tracker']['leech_expire_factor']);
} }
$sql .= " GROUP BY user_id"; $sql .= " GROUP BY user_id";
if ($row = DB()->fetch_row($sql)) { if ($row = DB()->fetch_row($sql)) {
if ($seeder && $tr_cfg['limit_seed_count'] && $row['active_torrents'] >= $tr_cfg['limit_seed_count']) { if ($seeder && $bb_cfg['tracker']['limit_seed_count'] && $row['active_torrents'] >= $bb_cfg['tracker']['limit_seed_count']) {
msg_die('Only ' . $tr_cfg['limit_seed_count'] . ' torrent(s) allowed for seeding'); msg_die('Only ' . $bb_cfg['tracker']['limit_seed_count'] . ' torrent(s) allowed for seeding');
} elseif (!$seeder && $tr_cfg['limit_leech_count'] && $row['active_torrents'] >= $tr_cfg['limit_leech_count']) { } elseif (!$seeder && $bb_cfg['tracker']['limit_leech_count'] && $row['active_torrents'] >= $bb_cfg['tracker']['limit_leech_count']) {
msg_die('Only ' . $tr_cfg['limit_leech_count'] . ' torrent(s) allowed for leeching' . $rating_msg); msg_die('Only ' . $bb_cfg['tracker']['limit_leech_count'] . ' torrent(s) allowed for leeching' . $rating_msg);
} }
} }
} }
// Limit concurrent IPs // Limit concurrent IPs
if ($tr_cfg['limit_concurrent_ips'] && (($tr_cfg['limit_seed_ips'] && $seeder) || ($tr_cfg['limit_leech_ips'] && !$seeder))) { if ($bb_cfg['tracker']['limit_concurrent_ips'] && (($bb_cfg['tracker']['limit_seed_ips'] && $seeder) || ($bb_cfg['tracker']['limit_leech_ips'] && !$seeder))) {
$sql = "SELECT COUNT(DISTINCT ip) AS ips $sql = "SELECT COUNT(DISTINCT ip) AS ips
FROM " . BB_BT_TRACKER . " FROM " . BB_BT_TRACKER . "
WHERE topic_id = $topic_id WHERE topic_id = $topic_id
@ -295,16 +295,16 @@ if ($lp_info) {
AND seeder = $seeder AND seeder = $seeder
AND ip != '$ip_sql'"; AND ip != '$ip_sql'";
if (!$seeder && $tr_cfg['leech_expire_factor']) { if (!$seeder && $bb_cfg['tracker']['leech_expire_factor']) {
$sql .= " AND update_time > " . (TIMENOW - 60 * $tr_cfg['leech_expire_factor']); $sql .= " AND update_time > " . (TIMENOW - 60 * $bb_cfg['tracker']['leech_expire_factor']);
} }
$sql .= " GROUP BY topic_id"; $sql .= " GROUP BY topic_id";
if ($row = DB()->fetch_row($sql)) { if ($row = DB()->fetch_row($sql)) {
if ($seeder && $tr_cfg['limit_seed_ips'] && $row['ips'] >= $tr_cfg['limit_seed_ips']) { if ($seeder && $bb_cfg['tracker']['limit_seed_ips'] && $row['ips'] >= $bb_cfg['tracker']['limit_seed_ips']) {
msg_die('You can seed only from ' . $tr_cfg['limit_seed_ips'] . " IP's"); msg_die('You can seed only from ' . $bb_cfg['tracker']['limit_seed_ips'] . " IP's");
} elseif (!$seeder && $tr_cfg['limit_leech_ips'] && $row['ips'] >= $tr_cfg['limit_leech_ips']) { } elseif (!$seeder && $bb_cfg['tracker']['limit_leech_ips'] && $row['ips'] >= $bb_cfg['tracker']['limit_leech_ips']) {
msg_die('You can leech only from ' . $tr_cfg['limit_leech_ips'] . " IP's"); msg_die('You can leech only from ' . $bb_cfg['tracker']['limit_leech_ips'] . " IP's");
} }
} }
} }
@ -328,7 +328,7 @@ $up_add = ($lp_info && $uploaded > $lp_info['uploaded']) ? $uploaded - $lp_info[
$down_add = ($lp_info && $downloaded > $lp_info['downloaded']) ? $downloaded - $lp_info['downloaded'] : 0; $down_add = ($lp_info && $downloaded > $lp_info['downloaded']) ? $downloaded - $lp_info['downloaded'] : 0;
// Gold/Silver releases // Gold/Silver releases
if ($tr_cfg['gold_silver_enabled'] && $down_add) { if ($bb_cfg['tracker']['gold_silver_enabled'] && $down_add) {
if ($tor_type == TOR_TYPE_GOLD) { if ($tor_type == TOR_TYPE_GOLD) {
$down_add = 0; $down_add = 0;
} // Silver releases } // Silver releases
@ -337,6 +337,11 @@ if ($tr_cfg['gold_silver_enabled'] && $down_add) {
} }
} }
// Freeleech
if ($bb_cfg['tracker']['freeleech'] && $down_add) {
$down_add = 0;
}
// Insert / update peer info // Insert / update peer info
$peer_info_updated = false; $peer_info_updated = false;
$update_time = ($stopped) ? 0 : TIMENOW; $update_time = ($stopped) ? 0 : TIMENOW;
@ -414,8 +419,8 @@ if (DBG_LOG) {
if (!$output) { if (!$output) {
// Retrieve peers // Retrieve peers
$numwant = (int)$tr_cfg['numwant']; $numwant = (int)$bb_cfg['tracker']['numwant'];
$compact_mode = ($tr_cfg['compact_mode'] || !empty($compact)); $compact_mode = ($bb_cfg['tracker']['compact_mode'] || !empty($compact));
$rowset = DB()->fetch_rowset(" $rowset = DB()->fetch_rowset("
SELECT ip, port SELECT ip, port
@ -445,7 +450,7 @@ if (!$output) {
$seeders = 0; $seeders = 0;
$leechers = 0; $leechers = 0;
if ($tr_cfg['scrape']) { if ($bb_cfg['tracker']['scrape']) {
$row = DB()->fetch_row(" $row = DB()->fetch_row("
SELECT seeders, leechers SELECT seeders, leechers
FROM " . BB_BT_TRACKER_SNAP . " FROM " . BB_BT_TRACKER_SNAP . "

View file

@ -27,11 +27,11 @@ if (!defined('IN_TRACKER')) {
die(basename(__FILE__)); die(basename(__FILE__));
} }
global $tr_cfg; global $bb_cfg;
// Exit if tracker is disabled // Exit if tracker is disabled
if ($tr_cfg['off']) { if ($bb_cfg['tracker']['off']) {
msg_die($tr_cfg['off_reason']); msg_die($bb_cfg['tracker']['off_reason']);
} }
// //

View file

@ -27,9 +27,9 @@ define('IN_TRACKER', true);
define('BB_ROOT', './../'); define('BB_ROOT', './../');
require dirname(__DIR__) . '/common.php'; require dirname(__DIR__) . '/common.php';
global $tr_cfg; global $bb_cfg;
if (!$tr_cfg['scrape']) { if (!$bb_cfg['tracker']['scrape']) {
msg_die('Please disable SCRAPE!'); msg_die('Please disable SCRAPE!');
} }

View file

@ -27,7 +27,6 @@ if (isset($_REQUEST['GLOBALS'])) {
die(); die();
} }
ignore_user_abort(true);
define('TIMESTART', utime()); define('TIMESTART', utime());
define('TIMENOW', time()); define('TIMENOW', time());
@ -47,6 +46,9 @@ if (empty($_SERVER['SERVER_NAME'])) {
if (!defined('BB_ROOT')) { if (!defined('BB_ROOT')) {
define('BB_ROOT', './'); define('BB_ROOT', './');
} }
if (!defined('BB_SCRIPT')) {
define('BB_SCRIPT', 'undefined');
}
header('X-Frame-Options: SAMEORIGIN'); header('X-Frame-Options: SAMEORIGIN');
@ -64,9 +66,54 @@ if (!file_exists(__DIR__ . '/vendor/autoload.php')) {
} }
require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/vendor/autoload.php';
/**
* Gets the value of an environment variable. Supports boolean, empty and null.
*
* @param string $key
* @param mixed $default
* @return mixed
*/
function env($key, $default = null)
{
$value = getenv($key);
if (!$value) return value($default);
switch (strtolower($value)) {
case 'true':
case '(true)':
return true;
case 'false':
case '(false)':
return false;
case '(null)':
return null;
case '(empty)':
return '';
}
return $value;
}
/**
* Return the default value of the given value.
*
* @param mixed $value
* @return mixed
*/
function value($value)
{
return $value instanceof Closure ? $value() : $value;
}
// Get initial config // Get initial config
if (!getenv('APP_DEBUG') && file_exists(__DIR__ . '/.env')) {
(new Symfony\Component\Dotenv\Dotenv())->load(__DIR__ . '/.env');
}
require_once __DIR__ . '/library/config.php'; require_once __DIR__ . '/library/config.php';
// Local config
if (file_exists(__DIR__ . '/library/config.local.php')) {
require_once __DIR__ . '/library/config.local.php';
}
// Bugsnag error reporting // Bugsnag error reporting
if ($bb_cfg['bugsnag']['enabled'] && !empty($bb_cfg['bugsnag']['api_key'])) { if ($bb_cfg['bugsnag']['enabled'] && !empty($bb_cfg['bugsnag']['api_key'])) {
/** @var Bugsnag\Handler $bugsnag */ /** @var Bugsnag\Handler $bugsnag */
@ -93,7 +140,7 @@ define('BT_AUTH_KEY_LENGTH', 10);
define('PEER_HASH_PREFIX', 'peer_'); define('PEER_HASH_PREFIX', 'peer_');
define('PEERS_LIST_PREFIX', 'peers_list_'); define('PEERS_LIST_PREFIX', 'peers_list_');
define('PEER_HASH_EXPIRE', round($bb_cfg['announce_interval'] * (0.85 * $tr_cfg['expire_factor']))); // sec define('PEER_HASH_EXPIRE', round($bb_cfg['announce_interval'] * (0.85 * $bb_cfg['tracker']['expire_factor']))); // sec
define('PEERS_LIST_EXPIRE', round($bb_cfg['announce_interval'] * 0.7)); // sec define('PEERS_LIST_EXPIRE', round($bb_cfg['announce_interval'] * 0.7)); // sec
define('DL_STATUS_RELEASER', -1); define('DL_STATUS_RELEASER', -1);

View file

@ -44,7 +44,8 @@
"roave/security-advisories": "dev-master", "roave/security-advisories": "dev-master",
"rych/bencode": "^1.0", "rych/bencode": "^1.0",
"samdark/sitemap": "^2.0", "samdark/sitemap": "^2.0",
"swiftmailer/swiftmailer": "^5.4" "swiftmailer/swiftmailer": "^5.4",
"symfony/dotenv": "^3.3"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {

1
dl.php
View file

@ -31,6 +31,7 @@ require ATTACH_DIR . '/attachment_mod.php';
$datastore->enqueue(array( $datastore->enqueue(array(
'attach_extensions', 'attach_extensions',
'cat_forums',
)); ));
$download_id = request_var('id', 0); $download_id = request_var('id', 0);

View file

@ -39,6 +39,7 @@ $show_subforums = true;
$datastore->enqueue(array( $datastore->enqueue(array(
'stats', 'stats',
'moderators', 'moderators',
'cat_forums',
)); ));
if ($bb_cfg['show_latest_news']) { if ($bb_cfg['show_latest_news']) {
$datastore->enqueue('latest_news'); $datastore->enqueue('latest_news');

View file

@ -70,6 +70,7 @@ switch ($mode) {
$datastore->enqueue(array( $datastore->enqueue(array(
'moderators', 'moderators',
'cat_forums',
)); ));
$moderators = array(); $moderators = array();

View file

@ -123,7 +123,7 @@ switch ($mode) {
case 'unlock_cron': case 'unlock_cron':
cron_enable_board(); TorrentPier\Helpers\CronHelper::enableBoard();
$this->response['unlock_cron_html'] = '<span class="seed bold">' . $lang['ADMIN_UNLOCKED'] . '</span>'; $this->response['unlock_cron_html'] = '<span class="seed bold">' . $lang['ADMIN_UNLOCKED'] . '</span>';

View file

@ -103,9 +103,7 @@ if ($tor_auth_reg || $tor_auth_del) {
$tracker_link = ($tor_reged) ? $unreg_tor_url : $reg_tor_url; $tracker_link = ($tor_reged) ? $unreg_tor_url : $reg_tor_url;
} }
if ($bb_cfg['torrent_name_style']) {
$display_name = '[' . $bb_cfg['server_name'] . '].t' . $bt_topic_id . '.torrent'; $display_name = '[' . $bb_cfg['server_name'] . '].t' . $bt_topic_id . '.torrent';
}
if (!$tor_reged) { if (!$tor_reged) {
$template->assign_block_vars('postrow.attach.tor_not_reged', array( $template->assign_block_vars('postrow.attach.tor_not_reged', array(

View file

@ -27,32 +27,34 @@ if (!defined('BB_ROOT')) {
die(basename(__FILE__)); die(basename(__FILE__));
} }
$bb_cfg = $tr_cfg = $page_cfg = []; $domain_name = 'torrentpier.me'; // enter here your primary domain name of your site
$domain_name = (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : $domain_name;
$bb_cfg = [];
// Increase number after changing js or css // Increase number after changing js or css
$bb_cfg['js_ver'] = $bb_cfg['css_ver'] = 1; $bb_cfg['js_ver'] = $bb_cfg['css_ver'] = 1;
// Primary domain name
$domain_name = 'torrentpier.me'; // enter here your primary domain name of your site
$domain_name = (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : $domain_name;
// Version info // Version info
$bb_cfg['tp_version'] = '2.1.6'; $bb_cfg['tp_version'] = '2.1.6';
$bb_cfg['tp_release_date'] = '07-07-2017'; $bb_cfg['tp_release_date'] = '12-07-2017';
$bb_cfg['tp_release_codename'] = 'Aurochs'; $bb_cfg['tp_release_codename'] = 'Aurochs';
// Database // Database
$charset = 'utf8';
$pconnect = false;
// Настройка баз данных ['db']['srv_name'] => (array) srv_cfg; // Настройка баз данных ['db']['srv_name'] => (array) srv_cfg;
// порядок параметров srv_cfg (хост, название базы, пользователь, пароль, charset, pconnect); // порядок параметров srv_cfg (хост, название базы, пользователь, пароль, charset, pconnect);
$bb_cfg['db'] = array( $bb_cfg['db'] = [
'db' => array('localhost', 'tp_216', 'user', 'pass', $charset, $pconnect), 'db' => [
); env('DB_HOST', 'localhost'),
env('DB_DATABASE', 'torrentpier'),
env('DB_USERNAME', 'root'),
env('DB_PASSWORD', 'pass'),
'utf8',
false
],
];
$bb_cfg['db_alias'] = array( $bb_cfg['db_alias'] = [
// 'alias' => 'srv_name'
'log' => 'db', // BB_LOG 'log' => 'db', // BB_LOG
'search' => 'db', // BB_TOPIC_SEARCH 'search' => 'db', // BB_TOPIC_SEARCH
'sres' => 'db', // BB_BT_USER_SETTINGS, BB_SEARCH_RESULTS 'sres' => 'db', // BB_BT_USER_SETTINGS, BB_SEARCH_RESULTS
@ -62,35 +64,36 @@ $bb_cfg['db_alias'] = array(
'ut' => 'db', // BB_TOPICS_USER_POSTED 'ut' => 'db', // BB_TOPICS_USER_POSTED
'pm' => 'db', // BB_PRIVMSGS, BB_PRIVMSGS_TEXT 'pm' => 'db', // BB_PRIVMSGS, BB_PRIVMSGS_TEXT
'pt' => 'db', // BB_POSTS_TEXT 'pt' => 'db', // BB_POSTS_TEXT
); ];
// Cache // Cache
$bb_cfg['cache']['pconnect'] = true; $bb_cfg['cache'] = [
$bb_cfg['cache']['db_dir'] = realpath(BB_ROOT) . '/internal_data/cache/filecache/'; 'pconnect' => true,
$bb_cfg['cache']['prefix'] = 'tp_'; // Префикс кеша ('tp_') 'db_dir' => realpath(BB_ROOT) . '/internal_data/cache/filecache/',
$bb_cfg['cache']['memcache'] = array( 'prefix' => 'tp_', // Префикс кеша ('tp_')
'memcache' => [
'host' => '127.0.0.1', 'host' => '127.0.0.1',
'port' => 11211, 'port' => 11211,
'pconnect' => true, 'pconnect' => true,
'con_required' => true, 'con_required' => true,
); ],
$bb_cfg['cache']['redis'] = array( 'redis' => [
'host' => '127.0.0.1', 'host' => '127.0.0.1',
'port' => 6379, 'port' => 6379,
'con_required' => true, 'con_required' => true,
); ],
// Available cache types: memcache, sqlite, redis, apc, xcache (default of filecache) // Available cache types: memcache, sqlite, redis, apc, xcache (default of filecache)
# name => array( (string) type, (array) cfg ) 'engines' => [
$bb_cfg['cache']['engines'] = array( 'bb_cache' => ['filecache', []],
'bb_cache' => array('filecache', array()), 'bb_config' => ['filecache', []],
'bb_config' => array('filecache', array()), 'tr_cache' => ['filecache', []],
'tr_cache' => array('filecache', array()), 'session_cache' => ['filecache', []],
'session_cache' => array('filecache', array()), 'bb_cap_sid' => ['filecache', []],
'bb_cap_sid' => array('filecache', array()), 'bb_login_err' => ['filecache', []],
'bb_login_err' => array('filecache', array()), 'bb_poll_data' => ['filecache', []],
'bb_poll_data' => array('filecache', array()), ],
); ];
// Datastore // Datastore
// Available datastore types: memcache, sqlite, redis, apc, xcache (default filecache) // Available datastore types: memcache, sqlite, redis, apc, xcache (default filecache)
$bb_cfg['datastore_type'] = 'filecache'; $bb_cfg['datastore_type'] = 'filecache';
@ -111,14 +114,14 @@ $bb_cfg['verify_reported_ip'] = true; // Verify IP reported by clie
$bb_cfg['allow_internal_ip'] = false; // Allow internal IP (10.xx.. etc.) $bb_cfg['allow_internal_ip'] = false; // Allow internal IP (10.xx.. etc.)
// Ocelot // Ocelot
$bb_cfg['ocelot'] = array( $bb_cfg['ocelot'] = [
'enabled' => false, 'enabled' => false,
'host' => $domain_name, 'host' => $domain_name,
'port' => 34000, 'port' => 34000,
'url' => "http://$domain_name:34000/", // with '/' 'url' => "http://$domain_name:34000/", // with '/'
'secret' => 'some_10_chars', // 10 chars 'secret' => 'some_10_chars', // 10 chars
'stats' => 'some_10_chars', // 10 chars 'stats' => 'some_10_chars', // 10 chars
); ];
// FAQ url help link // FAQ url help link
$bb_cfg['how_to_download_url_help'] = 'viewtopic.php?t=1'; // Как скачивать? $bb_cfg['how_to_download_url_help'] = 'viewtopic.php?t=1'; // Как скачивать?
@ -130,58 +133,15 @@ $bb_cfg['search_help_url'] = 'viewtopic.php?t=4'; // Помощь по поис
$bb_cfg['bt_min_ratio_allow_dl_tor'] = 0.3; // 0 - disable $bb_cfg['bt_min_ratio_allow_dl_tor'] = 0.3; // 0 - disable
$bb_cfg['bt_min_ratio_warning'] = 0.6; // 0 - disable $bb_cfg['bt_min_ratio_warning'] = 0.6; // 0 - disable
$tr_cfg = array(
'autoclean' => true,
'off' => false,
'off_reason' => 'temporarily disabled',
'numwant' => 50,
'update_dlstat' => true,
'expire_factor' => 2.5,
'compact_mode' => true,
'upd_user_up_down_stat' => true,
'browser_redirect_url' => '',
'scrape' => true,
'limit_active_tor' => true,
'limit_seed_count' => 0,
'limit_leech_count' => 8,
'leech_expire_factor' => 60,
'limit_concurrent_ips' => false,
'limit_seed_ips' => 0,
'limit_leech_ips' => 0,
'tor_topic_up' => true,
'gold_silver_enabled' => true,
'retracker' => true,
'retracker_host' => 'http://retracker.local/announce',
);
$bb_cfg['show_dl_status_in_search'] = true; $bb_cfg['show_dl_status_in_search'] = true;
$bb_cfg['show_dl_status_in_forum'] = true; $bb_cfg['show_dl_status_in_forum'] = true;
$bb_cfg['show_tor_info_in_dl_list'] = true; $bb_cfg['show_tor_info_in_dl_list'] = true;
$bb_cfg['allow_dl_list_names_mode'] = true; $bb_cfg['allow_dl_list_names_mode'] = true;
$bb_cfg['torrent_name_style'] = true; // use torrent name style [yoursite.com].txxx.torrent // Days to keep torrent registered
$bb_cfg['tor_help_links'] = 'terms.php';
// Сколько дней сохранять торрент зарегистрированным / Days to keep torrent registered, if:
$bb_cfg['seeder_last_seen_days_keep'] = 0; // сколько дней назад был сид последний раз $bb_cfg['seeder_last_seen_days_keep'] = 0; // сколько дней назад был сид последний раз
$bb_cfg['seeder_never_seen_days_keep'] = 0; // сколько дней имеется статус "Сида не было никогда" $bb_cfg['seeder_never_seen_days_keep'] = 0; // сколько дней имеется статус "Сида не было никогда"
/**
* Ratio limits
*
* Don't change the order of ratios (from 0 to 1):
* rating < 0.4 -- allow only 1 torrent for leeching
* rating < 0.5 -- only 2
* rating < 0.6 -- only 3
* rating > 0.6 -- depend on your tracker config limits (in "ACP - Tracker Config - Limits")
*/
$rating_limits = array(
'0.4' => 1,
'0.5' => 2,
'0.6' => 3,
);
// DL-Status (days to keep user's dlstatus records) // DL-Status (days to keep user's dlstatus records)
$bb_cfg['dl_will_days_keep'] = 360; $bb_cfg['dl_will_days_keep'] = 360;
$bb_cfg['dl_down_days_keep'] = 180; $bb_cfg['dl_down_days_keep'] = 180;
@ -194,12 +154,6 @@ $bb_cfg['torstat_days_keep'] = 60; // days to keep user's per-torrent stats
// Tor-Help // Tor-Help
$bb_cfg['torhelp_enabled'] = false; // find dead torrents (without seeder) that user might help seeding $bb_cfg['torhelp_enabled'] = false; // find dead torrents (without seeder) that user might help seeding
$page_cfg['show_torhelp'] = array(
# BB_SCRIPT => true
'index' => true,
'tracker' => true,
);
// URL's // URL's
$bb_cfg['ajax_url'] = 'ajax.php'; # "http://{$_SERVER['SERVER_NAME']}/ajax.php" $bb_cfg['ajax_url'] = 'ajax.php'; # "http://{$_SERVER['SERVER_NAME']}/ajax.php"
$bb_cfg['login_url'] = 'login.php'; # "http://{$domain_name}/login.php" $bb_cfg['login_url'] = 'login.php'; # "http://{$domain_name}/login.php"
@ -209,47 +163,28 @@ $bb_cfg['pm_url'] = 'privmsg.php'; # "http://{$domain_name}/privmsg.php"
// Language // Language
$bb_cfg['charset'] = 'utf8'; // page charset $bb_cfg['charset'] = 'utf8'; // page charset
$bb_cfg['auto_language'] = true; // select user-preferred language automatically $bb_cfg['auto_language'] = true; // select user-preferred language automatically
$bb_cfg['lang'] = [
if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && $bb_cfg['auto_language']) { 'ru' => [
$user_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (file_exists(LANG_ROOT_DIR . '/' . $user_lang)) {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR . '/' . $user_lang . '/';
$bb_cfg['default_lang'] = $user_lang;
} else {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR . '/en/';
$bb_cfg['default_lang'] = 'en';
}
} else {
if (isset($bb_cfg['default_lang']) && file_exists(LANG_ROOT_DIR . '/' . $bb_cfg['default_lang'])) {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR . '/' . $bb_cfg['default_lang'] . '/';
} else {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR . '/en/';
}
}
$bb_cfg['lang'] = array(
'ru' => array(
'name' => 'Русский', 'name' => 'Русский',
'locale' => 'ru_RU.UTF-8', 'locale' => 'ru_RU.UTF-8',
'encoding' => 'UTF-8', 'encoding' => 'UTF-8',
), ],
'uk' => array( 'uk' => [
'name' => 'Український', 'name' => 'Український',
'locale' => 'uk_UA.UTF-8', 'locale' => 'uk_UA.UTF-8',
'encoding' => 'UTF-8', 'encoding' => 'UTF-8',
), ],
'en' => array( 'en' => [
'name' => 'English', 'name' => 'English',
'locale' => 'en_US.UTF-8', 'locale' => 'en_US.UTF-8',
'encoding' => 'UTF-8', 'encoding' => 'UTF-8',
), ],
); ];
// Templates // Templates
$bb_cfg['templates'] = array( $bb_cfg['templates'] = [
// 'folder' => 'Name',
'default' => 'Стандартный', 'default' => 'Стандартный',
); ];
$bb_cfg['tpl_name'] = 'default'; $bb_cfg['tpl_name'] = 'default';
$bb_cfg['stylesheet'] = 'main.css'; $bb_cfg['stylesheet'] = 'main.css';
@ -257,18 +192,9 @@ $bb_cfg['stylesheet'] = 'main.css';
$bb_cfg['show_sidebar1_on_every_page'] = false; $bb_cfg['show_sidebar1_on_every_page'] = false;
$bb_cfg['show_sidebar2_on_every_page'] = false; $bb_cfg['show_sidebar2_on_every_page'] = false;
$page_cfg['show_sidebar1'] = array(
# BB_SCRIPT => true
'index' => true,
);
$page_cfg['show_sidebar2'] = array(
# BB_SCRIPT => true
'index' => true,
);
// Cookie // Cookie
$bb_cfg['cookie_domain'] = in_array($domain_name, array(getenv('SERVER_ADDR'), 'localhost'), true) ? '' : ".$domain_name"; $bb_cfg['cookie_domain'] = in_array($domain_name, [getenv('SERVER_ADDR'), 'localhost'], true) ? '' : ".$domain_name";
$bb_cfg['cookie_secure'] = (!empty($_SERVER['HTTPS']) ? 1 : 0); $bb_cfg['cookie_secure'] = !empty($_SERVER['HTTPS']) ? 1 : 0;
$bb_cfg['cookie_prefix'] = 'bb_'; // 'bb_' $bb_cfg['cookie_prefix'] = 'bb_'; // 'bb_'
// Sessions // Sessions
@ -322,30 +248,18 @@ $bb_cfg['bugsnag'] = [
]; ];
// Special users // Special users
$bb_cfg['dbg_users'] = array( $bb_cfg['dbg_users'] = [
# user_id => 'name', # user_id => 'name',
2 => 'admin', 2 => 'admin',
); ];
$bb_cfg['unlimited_users'] = [
$bb_cfg['unlimited_users'] = array(
# user_id => 'name', # user_id => 'name',
2 => 'admin', 2 => 'admin',
); ];
$bb_cfg['super_admins'] = [
$bb_cfg['super_admins'] = array(
# user_id => 'name', # user_id => 'name',
2 => 'admin', 2 => 'admin',
); ];
// Check some variable
// Magic quotes
if (get_magic_quotes_gpc()) {
die('Set magic_quotes off');
}
// JSON
if (!function_exists('json_encode')) {
die('Json_encode not installed');
}
// Date format // Date format
$bb_cfg['date_format'] = 'Y-m-d'; $bb_cfg['date_format'] = 'Y-m-d';
@ -354,7 +268,7 @@ $bb_cfg['date_format'] = 'Y-m-d';
$bb_cfg['sf_on_first_page_only'] = true; $bb_cfg['sf_on_first_page_only'] = true;
// Forums // Forums
$bb_cfg['allowed_topics_per_page'] = array(50, 100, 150, 200, 250, 300); $bb_cfg['allowed_topics_per_page'] = [50, 100, 150, 200, 250, 300];
// Topics // Topics
$bb_cfg['show_quick_reply'] = true; $bb_cfg['show_quick_reply'] = true;
@ -370,15 +284,14 @@ $bb_cfg['post_date_format'] = 'd-M-Y H:i';
$bb_cfg['ext_link_new_win'] = true; // open external links in new window $bb_cfg['ext_link_new_win'] = true; // open external links in new window
$bb_cfg['topic_moved_days_keep'] = 7; // remove topic moved links after xx days (or FALSE to disable) $bb_cfg['topic_moved_days_keep'] = 7; // remove topic moved links after xx days (or FALSE to disable)
$bb_cfg['allowed_posts_per_page'] = [15, 30, 50, 100];
$bb_cfg['allowed_posts_per_page'] = array(15, 30, 50, 100);
$bb_cfg['user_signature_start'] = '<div class="signature"><br />_________________<br />'; $bb_cfg['user_signature_start'] = '<div class="signature"><br />_________________<br />';
$bb_cfg['user_signature_end'] = '</div>'; // Это позволит использовать html теги, которые требуют закрытия. Например <table> или <font color> $bb_cfg['user_signature_end'] = '</div>'; // Это позволит использовать html теги, которые требуют закрытия. Например <table> или <font color>
// Posts // Posts
$bb_cfg['use_posts_cache'] = true; // if you switch from ON to OFF, you need to TRUNCATE `bb_posts_html` table $bb_cfg['use_posts_cache'] = true;
$bb_cfg['posts_cache_days_keep'] = 14; $bb_cfg['posts_cache_days_keep'] = 14;
$bb_cfg['max_post_length'] = 120000; // bytes $bb_cfg['max_post_length'] = 120000;
$bb_cfg['use_ajax_posts'] = true; $bb_cfg['use_ajax_posts'] = true;
// Search // Search
@ -402,9 +315,9 @@ $bb_cfg['max_smilies'] = 10; // Максимальное число
// PM // PM
$bb_cfg['privmsg_disable'] = false; // отключить систему личных сообщений на форуме $bb_cfg['privmsg_disable'] = false; // отключить систему личных сообщений на форуме
$bb_cfg['max_outgoing_pm_cnt'] = 10; // ограничение на кол. одновременных исходящих лс (для замедления рассылки спама) $bb_cfg['max_outgoing_pm_cnt'] = 10; // ограничение на кол. одновременных исходящих лс (для замедления рассылки спама)
$bb_cfg['max_inbox_privmsgs'] = 200; // максимальное число сообщений в папке входящие $bb_cfg['max_inbox_privmsgs'] = 500; // максимальное число сообщений в папке входящие
$bb_cfg['max_savebox_privmsgs'] = 25; // максимальное число сообщений в папке сохраненные $bb_cfg['max_savebox_privmsgs'] = 500; // максимальное число сообщений в папке сохраненные
$bb_cfg['max_sentbox_privmsgs'] = 50; // максимальное число сообщений в папке отправленные $bb_cfg['max_sentbox_privmsgs'] = 500; // максимальное число сообщений в папке отправленные
$bb_cfg['pm_days_keep'] = 180; // время хранения ЛС $bb_cfg['pm_days_keep'] = 180; // время хранения ЛС
// Actions log // Actions log
@ -423,7 +336,6 @@ $bb_cfg['tidy_post'] = (!in_array('tidy', get_loaded_extensions(), true)) ? fals
// Misc // Misc
$bb_cfg['mem_on_start'] = MEM_USAGE ? memory_get_usage() : 0; $bb_cfg['mem_on_start'] = MEM_USAGE ? memory_get_usage() : 0;
$bb_cfg['translate_dates'] = true; // in displaying time $bb_cfg['translate_dates'] = true; // in displaying time
$bb_cfg['use_word_censor'] = true; $bb_cfg['use_word_censor'] = true;
@ -431,30 +343,23 @@ $bb_cfg['last_visit_date_format'] = 'd-M H:i';
$bb_cfg['last_post_date_format'] = 'd-M-y H:i'; $bb_cfg['last_post_date_format'] = 'd-M-y H:i';
$bb_cfg['poll_max_days'] = 180; // сколько дней с момента создания темы опрос будет активным $bb_cfg['poll_max_days'] = 180; // сколько дней с момента создания темы опрос будет активным
$bb_cfg['allow_change'] = array( $bb_cfg['allow_change'] = [
'language' => true, 'language' => true,
'dateformat' => true, 'dateformat' => true,
); ];
$banned_user_agents = array(
// Download Master
# 'download',
# 'master',
// Others
# 'wget',
);
$bb_cfg['trash_forum_id'] = 0; // (int) 7 $bb_cfg['trash_forum_id'] = 0; // (int) 7
$bb_cfg['first_logon_redirect_url'] = 'index.php'; $bb_cfg['first_logon_redirect_url'] = 'index.php';
$bb_cfg['terms_and_conditions_url'] = 'terms.php'; $bb_cfg['terms_and_conditions_url'] = 'terms.php';
$bb_cfg['tor_help_links'] = 'terms.php';
$bb_cfg['user_agreement_url'] = 'info.php?show=user_agreement'; $bb_cfg['user_agreement_url'] = 'info.php?show=user_agreement';
$bb_cfg['copyright_holders_url'] = 'info.php?show=copyright_holders'; $bb_cfg['copyright_holders_url'] = 'info.php?show=copyright_holders';
$bb_cfg['advert_url'] = 'info.php?show=advert'; $bb_cfg['advert_url'] = 'info.php?show=advert';
// Extensions // Extensions
$bb_cfg['file_id_ext'] = array( $bb_cfg['file_id_ext'] = [
1 => 'gif', 1 => 'gif',
2 => 'gz', 2 => 'gz',
3 => 'jpg', 3 => 'jpg',
@ -464,64 +369,195 @@ $bb_cfg['file_id_ext'] = array(
7 => 'tiff', 7 => 'tiff',
8 => 'torrent', 8 => 'torrent',
9 => 'zip', 9 => 'zip',
); ];
// Attachments // Attachments
$bb_cfg['attach'] = array( $bb_cfg['attach'] = [
'upload_path' => DATA_DIR . '/torrent_files', // путь к директории с torrent файлами 'upload_path' => DATA_DIR . '/torrent_files', // путь к директории с torrent файлами
'max_size' => 250 * 1024, // размер аватары в байтах 'max_size' => 5 * 1024 * 1024, // максимальный размер файла в байтах
); ];
$bb_cfg['tor_forums_allowed_ext'] = array('torrent', 'zip', 'rar'); // для разделов с раздачами $bb_cfg['tor_forums_allowed_ext'] = ['torrent', 'zip', 'rar']; // для разделов с раздачами
$bb_cfg['gen_forums_allowed_ext'] = array('zip', 'rar'); // для обычных разделов $bb_cfg['gen_forums_allowed_ext'] = ['zip', 'rar']; // для обычных разделов
// Avatars // Avatars
$bb_cfg['avatars'] = array( $bb_cfg['avatars'] = [
'allowed_ext' => array('gif', 'jpg', 'jpeg', 'png'), // разрешенные форматы файлов 'allowed_ext' => ['gif', 'jpg', 'jpeg', 'png'], // разрешенные форматы файлов
'bot_avatar' => '/gallery/bot.gif', // аватара бота 'bot_avatar' => '/gallery/bot.gif', // аватара бота
'max_size' => 100 * 1024, // размер аватары в байтах 'max_size' => 100 * 1024, // размер аватары в байтах
'max_height' => 100, // высота аватара в px 'max_height' => 100, // высота аватара в px
'max_width' => 100, // ширина аватара в px 'max_width' => 100, // ширина аватара в px
'no_avatar' => '/gallery/noavatar.png', // дефолтная аватара 'no_avatar' => '/gallery/noavatar.png', // дефолтная аватара
'upload_path' => BB_PATH . '/data/avatars', // путь к директории с аватарами 'upload_path' => BB_PATH . '/data/avatars/', // путь к директории с аватарами
'up_allowed' => true, // разрешить загрузку аватар 'up_allowed' => true, // разрешить загрузку аватар
); ];
// Group avatars // Group avatars
$bb_cfg['group_avatars'] = array( $bb_cfg['group_avatars'] = [
'allowed_ext' => array('gif', 'jpg', 'jpeg', 'png'), // разрешенные форматы файлов 'allowed_ext' => ['gif', 'jpg', 'jpeg', 'png'], // разрешенные форматы файлов
'max_size' => 300 * 1024, // размер аватары в байтах 'max_size' => 300 * 1024, // размер аватары в байтах
'max_height' => 300, // высота аватара в px 'max_height' => 300, // высота аватара в px
'max_width' => 300, // ширина аватара в px 'max_width' => 300, // ширина аватара в px
'no_avatar' => '/gallery/noavatar.png', // дефолтная аватара 'no_avatar' => '/gallery/noavatar.png', // дефолтная аватара
'upload_path' => BB_PATH . '/data/avatars', // путь к директории с аватарами 'upload_path' => BB_PATH . '/data/avatars/', // путь к директории с аватарами
'up_allowed' => true, // разрешить загрузку аватар 'up_allowed' => true, // разрешить загрузку аватар
); ];
// Captcha // Captcha
// Get a Google reCAPTCHA API Key: https://www.google.com/recaptcha/admin // Get a Google reCAPTCHA API Key: https://www.google.com/recaptcha/admin
$bb_cfg['captcha'] = array( $bb_cfg['captcha'] = [
'disabled' => false, 'disabled' => false,
'public_key' => '', // your public key 'public_key' => '', // your public key
'secret_key' => '', // your secret key 'secret_key' => '', // your secret key
'theme' => 'light', // light or dark 'theme' => 'light', // light or dark
); ];
// Atom feed // Atom feed
$bb_cfg['atom'] = array( $bb_cfg['atom'] = [
'path' => INT_DATA_DIR . '/atom', // without ending slash 'path' => INT_DATA_DIR . '/atom', // without ending slash
'url' => './internal_data/atom', // without ending slash 'url' => './internal_data/atom', // without ending slash
); ];
// Nofollow // Nofollow
$bb_cfg['nofollow'] = array( $bb_cfg['nofollow'] = [
'disabled' => false, 'disabled' => false,
'allowed_url' => array($domain_name), // 'allowed.site', 'www.allowed.site' 'allowed_url' => [$domain_name], // 'allowed.site', 'www.allowed.site'
); ];
// Local config // Page settings
if (file_exists(BB_PATH . '/library/config.local.php')) { $bb_cfg['page'] = [
include_once(BB_PATH . '/library/config.local.php'); 'show_torhelp' => [
#BB_SCRIPT => true
'index' => true,
'tracker' => true,
],
'show_sidebar1' => [
#BB_SCRIPT => true
'index' => true,
],
'show_sidebar2' => [
#BB_SCRIPT => true
'index' => true,
]
];
// Tracker settings
$bb_cfg['tracker'] = [
'autoclean' => true,
'off' => false,
'off_reason' => 'temporarily disabled',
'numwant' => 50,
'update_dlstat' => true,
'expire_factor' => 2.5,
'compact_mode' => true,
'upd_user_up_down_stat' => true,
'browser_redirect_url' => '',
'scrape' => true,
'limit_active_tor' => true,
'limit_seed_count' => 0,
'limit_leech_count' => 8,
'leech_expire_factor' => 60,
'limit_concurrent_ips' => false,
'limit_seed_ips' => 0,
'limit_leech_ips' => 0,
'tor_topic_up' => true,
'gold_silver_enabled' => true,
'retracker' => true,
'retracker_host' => 'http://retracker.local/announce',
'freeleech' => false,
'guest_tracker' => true,
];
// Ratio settings
// Don't change the order of ratios (from 0 to 1)
// rating < 0.4 -- allow only 1 torrent for leeching
// rating < 0.5 -- only 2
// rating < 0.6 -- only 3
// rating > 0.6 -- depend on your tracker config limits (in "ACP - Tracker Config - Limits")
$bb_cfg['rating'] = [
'0.4' => 1,
'0.5' => 2,
'0.6' => 3,
];
// Иконки статусов раздач
$bb_cfg['tor_icons'] = [
TOR_NOT_APPROVED => '<span class="tor-icon tor-not-approved">*</span>',
TOR_CLOSED => '<span class="tor-icon tor-closed">x</span>',
TOR_APPROVED => '<span class="tor-icon tor-approved">&radic;</span>',
TOR_NEED_EDIT => '<span class="tor-icon tor-need-edit">?</span>',
TOR_NO_DESC => '<span class="tor-icon tor-no-desc">!</span>',
TOR_DUP => '<span class="tor-icon tor-dup">D</span>',
TOR_CLOSED_CPHOLD => '<span class="tor-icon tor-closed-cp">&copy;</span>',
TOR_CONSUMED => '<span class="tor-icon tor-consumed">&sum;</span>',
TOR_DOUBTFUL => '<span class="tor-icon tor-approved">#</span>',
TOR_CHECKING => '<span class="tor-icon tor-checking">%</span>',
TOR_TMP => '<span class="tor-icon tor-dup">T</span>',
TOR_PREMOD => '<span class="tor-icon tor-dup">&#8719;</span>',
];
// Запрет на скачивание
$bb_cfg['tor_frozen'] = [
TOR_CHECKING => true,
TOR_CLOSED => true,
TOR_CLOSED_CPHOLD => true,
TOR_CONSUMED => true,
TOR_DUP => true,
TOR_NO_DESC => true,
TOR_PREMOD => true,
];
// Разрешение на скачку автором, если закрыто на скачивание.
$bb_cfg['tor_frozen_author_download'] = [
TOR_CHECKING => true,
TOR_NO_DESC => true,
TOR_PREMOD => true,
];
// Запрет на редактирование головного сообщения
$bb_cfg['tor_cannot_edit'] = [
TOR_CHECKING => true,
TOR_CLOSED => true,
TOR_CONSUMED => true,
TOR_DUP => true,
];
// Запрет на создание новых раздач если стоит статус недооформлено/неоформлено/сомнительно
$bb_cfg['tor_cannot_new'] = [TOR_NEED_EDIT, TOR_NO_DESC, TOR_DOUBTFUL];
// Разрешение на ответ релизера, если раздача исправлена.
$bb_cfg['tor_reply'] = [TOR_NEED_EDIT, TOR_NO_DESC, TOR_DOUBTFUL];
// Если такой статус у релиза, то статистика раздачи будет скрыта
$bb_cfg['tor_no_tor_act'] = [
TOR_CLOSED => true,
TOR_DUP => true,
TOR_CLOSED_CPHOLD => true,
TOR_CONSUMED => true,
];
// Vote graphic length defines the maximum length of a vote result graphic, ie. 100% = this length
$bb_cfg['vote_graphic_length'] = 205;
$bb_cfg['privmsg_graphic_length'] = 175;
$bb_cfg['topic_left_column_witdh'] = 150;
// Images auto-resize
$bb_cfg['post_img_width_decr'] = 52;
$bb_cfg['attach_img_width_decr'] = 130;
if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && $bb_cfg['auto_language']) {
$user_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (file_exists(LANG_ROOT_DIR . '/' . $user_lang)) {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR . '/' . $user_lang . '/';
$bb_cfg['default_lang'] = $user_lang;
} else {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR . '/en/';
$bb_cfg['default_lang'] = 'en';
}
} else {
if (isset($bb_cfg['default_lang']) && file_exists(LANG_ROOT_DIR . '/' . $bb_cfg['default_lang'])) {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR . '/' . $bb_cfg['default_lang'] . '/';
} else {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR . '/en/';
}
} }
define('BB_CFG_LOADED', true);

View file

@ -113,3 +113,10 @@ define('TOR_DOUBTFUL', 8); // сомнительно
define('TOR_CHECKING', 9); // проверяется define('TOR_CHECKING', 9); // проверяется
define('TOR_TMP', 10); // временная define('TOR_TMP', 10); // временная
define('TOR_PREMOD', 11); // премодерация define('TOR_PREMOD', 11); // премодерация
define('CRON_LOG_ENABLED', true); // global ON/OFF
define('CRON_FORCE_LOG', false); // always log regardless of job settings
define('CRON_DIR', INC_DIR . '/cron/');
define('CRON_JOB_DIR', CRON_DIR . 'jobs/');
define('CRON_LOG_DIR', 'cron'); // inside LOG_DIR
define('CRON_LOG_FILE', 'cron'); // without ext

View file

@ -29,6 +29,7 @@ if (!defined('BB_ROOT')) {
$datastore->enqueue(array( $datastore->enqueue(array(
'smile_replacements', 'smile_replacements',
'cat_forums',
)); ));
$page_cfg['include_bbcode_js'] = true; $page_cfg['include_bbcode_js'] = true;

View file

@ -1,2 +0,0 @@
order allow,deny
deny from all

View file

@ -43,8 +43,7 @@ if ($cron_jobs) {
foreach ($cron_jobs as $job) { foreach ($cron_jobs as $job) {
if ($job['disable_board']) { if ($job['disable_board']) {
cron_disable_board(); TorrentPier\Helpers\CronHelper::disableBoard();
sleep(10);
break; break;
} }
} }
@ -52,7 +51,7 @@ if ($cron_jobs) {
require(CRON_DIR . 'cron_run.php'); require(CRON_DIR . 'cron_run.php');
// Update cron_last_check // Update cron_last_check
bb_update_config(array('cron_last_check' => (TIMENOW + 10))); bb_update_config(array('cron_last_check' => TIMENOW + 10));
} else { } else {
bb_log(date('H:i:s - ') . getmypid() . ' --x- no active jobs found ----------------------------------------------' . LOG_LF, CRON_LOG_DIR . '/cron_check'); bb_log(date('H:i:s - ') . getmypid() . ' --x- no active jobs found ----------------------------------------------' . LOG_LF, CRON_LOG_DIR . '/cron_check');
} }

View file

@ -1,82 +0,0 @@
<?php
/**
* MIT License
*
* Copyright (c) 2005-2017 TorrentPier
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
if (!defined('BB_ROOT')) {
die(basename(__FILE__));
}
//
// Functions
//
function cron_get_file_lock()
{
$lock_obtained = false;
if (file_exists(CRON_ALLOWED)) {
# bb_log(date('H:i:s - ') . getmypid() .' -x-- FILE-LOCK try'. LOG_LF, CRON_LOG_DIR .'/cron_check');
$lock_obtained = @rename(CRON_ALLOWED, CRON_RUNNING);
} elseif (file_exists(CRON_RUNNING)) {
cron_release_deadlock();
} elseif (!file_exists(CRON_ALLOWED) && !file_exists(CRON_RUNNING)) {
file_write('', CRON_ALLOWED);
$lock_obtained = @rename(CRON_ALLOWED, CRON_RUNNING);
}
return $lock_obtained;
}
function cron_track_running($mode)
{
@define('CRON_STARTMARK', TRIGGERS_DIR . '/cron_started_at_' . date('Y-m-d_H-i-s') . '_by_pid_' . getmypid());
if ($mode == 'start') {
cron_touch_lock_file(CRON_RUNNING);
file_write('', CRON_STARTMARK);
} elseif ($mode == 'end') {
@unlink(CRON_STARTMARK);
}
}
//
// Run cron
//
if (cron_get_file_lock()) {
ignore_user_abort(true);
register_shutdown_function('cron_release_file_lock');
register_shutdown_function('cron_enable_board');
# bb_log(date('H:i:s - ') . getmypid() .' --x- FILE-LOCK OBTAINED ###############'. LOG_LF, CRON_LOG_DIR .'/cron_check');
cron_track_running('start');
require(CRON_DIR . 'cron_check.php');
cron_track_running('end');
}
if (defined('IN_CRON')) {
bb_log(date('H:i:s - ') . getmypid() . ' --x- ALL jobs FINISHED *************************************************' . LOG_LF, CRON_LOG_DIR . '/cron_check');
}

View file

@ -132,8 +132,6 @@ foreach ($cron_jobs as $job) {
LIMIT 1 LIMIT 1
"); ");
sleep(1);
if (utime() - TIMESTART > 600) { if (utime() - TIMESTART > 600) {
return; // чтобы daily скрипты не блокировали надолго interval'ные return; // чтобы daily скрипты не блокировали надолго interval'ные
} }

View file

@ -1,2 +0,0 @@
order allow,deny
deny from all

View file

@ -50,12 +50,11 @@ if ($poll_max_days = (int)$bb_cfg['poll_max_days']) {
WHERE topic_id BETWEEN $start_id AND $end_id WHERE topic_id BETWEEN $start_id AND $end_id
AND vote_dt < DATE_SUB(NOW(), INTERVAL $poll_max_days DAY) AND vote_dt < DATE_SUB(NOW(), INTERVAL $poll_max_days DAY)
"); ");
if ($end_id > $finish_id) { if ($end_id > $finish_id) {
break; break;
} }
if (!($start_id % ($per_cycle * 10))) {
sleep(1);
}
$start_id += $per_cycle; $start_id += $per_cycle;
} }
} }

View file

@ -70,6 +70,4 @@ while (true) {
if (count($prune_users) < $users_per_cycle) { if (count($prune_users) < $users_per_cycle) {
break; break;
} }
sleep(3);
} }

View file

@ -59,8 +59,6 @@ DB()->query("
DB()->unlock(); DB()->unlock();
// ############################ Tables UNLOCKED ############################## // ############################ Tables UNLOCKED ##############################
sleep(5);
// Delete staled sessions // Delete staled sessions
DB()->query(" DB()->query("
DELETE s DELETE s

View file

@ -43,7 +43,7 @@ DB()->query("CREATE TABLE " . NEW_BB_BT_LAST_USERSTAT . " LIKE " . BB_BT_LAST_US
DB()->expect_slow_query(600); DB()->expect_slow_query(600);
// Update dlstat (part 1) // Update dlstat (part 1)
if ($tr_cfg['update_dlstat']) { if ($bb_cfg['tracker']['update_dlstat']) {
// ############################ Tables LOCKED ################################ // ############################ Tables LOCKED ################################
DB()->lock(array( DB()->lock(array(
BB_BT_TRACKER, BB_BT_TRACKER,
@ -80,16 +80,16 @@ DB()->query("
"); ");
// Clean peers table // Clean peers table
if ($tr_cfg['autoclean']) { if ($bb_cfg['tracker']['autoclean']) {
$announce_interval = max((int)$bb_cfg['announce_interval'], 60); $announce_interval = max((int)$bb_cfg['announce_interval'], 60);
$expire_factor = max((float)$tr_cfg['expire_factor'], 1); $expire_factor = max((float)$bb_cfg['tracker']['expire_factor'], 1);
$peer_expire_time = TIMENOW - floor($announce_interval * $expire_factor); $peer_expire_time = TIMENOW - floor($announce_interval * $expire_factor);
DB()->query("DELETE FROM " . BB_BT_TRACKER . " WHERE update_time < $peer_expire_time"); DB()->query("DELETE FROM " . BB_BT_TRACKER . " WHERE update_time < $peer_expire_time");
} }
// Update dlstat (part 2) // Update dlstat (part 2)
if ($tr_cfg['update_dlstat']) { if ($bb_cfg['tracker']['update_dlstat']) {
// Set "only 1 seeder" bonus // Set "only 1 seeder" bonus
DB()->query(" DB()->query("
UPDATE UPDATE

View file

@ -97,10 +97,6 @@ while (true) {
break; break;
} }
if (!($start_id % ($per_cycle * 10))) {
sleep(1);
}
$start_id += $per_cycle; $start_id += $per_cycle;
} }

View file

@ -1,2 +0,0 @@
order allow,deny
deny from all

View file

@ -1853,16 +1853,16 @@ function get_title_match_topics($title_match_sql, array $forum_ids = array())
{ {
global $bb_cfg, $sphinx, $userdata, $title_match, $lang; global $bb_cfg, $sphinx, $userdata, $title_match, $lang;
$where_ids = array(); $where_ids = [];
if ($forum_ids) { if ($forum_ids) {
$forum_ids = array_diff($forum_ids, array(0 => 0)); $forum_ids = array_diff($forum_ids, [0 => 0]);
} }
$title_match_sql = encode_text_match($title_match_sql); $title_match_sql = encode_text_match($title_match_sql);
if ($bb_cfg['search_engine_type'] == 'sphinx') { if ($bb_cfg['search_engine_type'] == 'sphinx') {
$sphinx = init_sphinx(); $sphinx = init_sphinx();
$where = ($title_match) ? 'topics' : 'posts'; $where = $title_match ? 'topics' : 'posts';
$sphinx->setServer($bb_cfg['sphinx_topic_titles_host'], $bb_cfg['sphinx_topic_titles_port']); $sphinx->setServer($bb_cfg['sphinx_topic_titles_host'], $bb_cfg['sphinx_topic_titles_port']);
if ($forum_ids) { if ($forum_ids) {
@ -1924,12 +1924,12 @@ function decode_text_match($txt)
function pad_with_space($str) function pad_with_space($str)
{ {
return ($str) ? " $str " : $str; return $str ? " $str " : $str;
} }
function create_magnet($infohash, $auth_key, $logged_in) function create_magnet($infohash, $auth_key, $logged_in)
{ {
global $bb_cfg, $_GET, $userdata, $images; global $bb_cfg, $_GET, $images;
$passkey_url = ((!$logged_in || isset($_GET['no_passkey'])) && $bb_cfg['bt_tor_browse_only_reg']) ? '' : "?{$bb_cfg['passkey_key']}=$auth_key"; $passkey_url = ((!$logged_in || isset($_GET['no_passkey'])) && $bb_cfg['bt_tor_browse_only_reg']) ? '' : "?{$bb_cfg['passkey_key']}=$auth_key";
return '<a href="magnet:?xt=urn:btih:' . bin2hex($infohash) . '&tr=' . urlencode($bb_cfg['bt_announce_url'] . $passkey_url) . '"><img src="' . $images['icon_magnet'] . '" width="12" height="12" border="0" /></a>'; return '<a href="magnet:?xt=urn:btih:' . bin2hex($infohash) . '&tr=' . urlencode($bb_cfg['bt_announce_url'] . $passkey_url) . '"><img src="' . $images['icon_magnet'] . '" width="12" height="12" border="0" /></a>';
@ -1940,9 +1940,9 @@ function set_die_append_msg($forum_id = null, $topic_id = null, $group_id = null
global $lang, $template; global $lang, $template;
$msg = ''; $msg = '';
$msg .= ($topic_id) ? '<p class="mrg_10"><a href="' . TOPIC_URL . $topic_id . '">' . $lang['TOPIC_RETURN'] . '</a></p>' : ''; $msg .= $topic_id ? '<p class="mrg_10"><a href="' . TOPIC_URL . $topic_id . '">' . $lang['TOPIC_RETURN'] . '</a></p>' : '';
$msg .= ($forum_id) ? '<p class="mrg_10"><a href="' . FORUM_URL . $forum_id . '">' . $lang['FORUM_RETURN'] . '</a></p>' : ''; $msg .= $forum_id ? '<p class="mrg_10"><a href="' . FORUM_URL . $forum_id . '">' . $lang['FORUM_RETURN'] . '</a></p>' : '';
$msg .= ($group_id) ? '<p class="mrg_10"><a href="' . GROUP_URL . $group_id . '">' . $lang['GROUP_RETURN'] . '</a></p>' : ''; $msg .= $group_id ? '<p class="mrg_10"><a href="' . GROUP_URL . $group_id . '">' . $lang['GROUP_RETURN'] . '</a></p>' : '';
$msg .= '<p class="mrg_10"><a href="index.php">' . $lang['INDEX_RETURN'] . '</a></p>'; $msg .= '<p class="mrg_10"><a href="index.php">' . $lang['INDEX_RETURN'] . '</a></p>';
$template->assign_var('BB_DIE_APPEND_MSG', $msg); $template->assign_var('BB_DIE_APPEND_MSG', $msg);
} }
@ -2052,7 +2052,8 @@ function gender_image($gender)
if (!$bb_cfg['gender']) { if (!$bb_cfg['gender']) {
$user_gender = ''; $user_gender = '';
return $user_gender; return $user_gender;
} else { }
switch ($gender) { switch ($gender) {
case MALE: case MALE:
$user_gender = '<img src="' . $images['icon_male'] . '" alt="' . $lang['GENDER_SELECT'][MALE] . '" title="' . $lang['GENDER_SELECT'][MALE] . '" border="0" />'; $user_gender = '<img src="' . $images['icon_male'] . '" alt="' . $lang['GENDER_SELECT'][MALE] . '" title="' . $lang['GENDER_SELECT'][MALE] . '" border="0" />';
@ -2064,19 +2065,19 @@ function gender_image($gender)
$user_gender = '<img src="' . $images['icon_nogender'] . '" alt="' . $lang['GENDER_SELECT'][NOGENDER] . '" title="' . $lang['GENDER_SELECT'][NOGENDER] . '" border="0" />'; $user_gender = '<img src="' . $images['icon_nogender'] . '" alt="' . $lang['GENDER_SELECT'][NOGENDER] . '" title="' . $lang['GENDER_SELECT'][NOGENDER] . '" border="0" />';
break; break;
} }
}
return $user_gender; return $user_gender;
} }
function is_gold($type) function is_gold($type)
{ {
global $lang, $tr_cfg; global $lang, $bb_cfg;
if (!$tr_cfg['gold_silver_enabled']) { if (!$bb_cfg['tracker']['gold_silver_enabled']) {
$is_gold = ''; $is_gold = '';
return $is_gold; return $is_gold;
} else { }
switch ($type) { switch ($type) {
case TOR_TYPE_GOLD: case TOR_TYPE_GOLD:
$is_gold = '<img src="styles/images/tor_gold.gif" width="16" height="15" title="' . $lang['GOLD'] . '" />&nbsp;'; $is_gold = '<img src="styles/images/tor_gold.gif" width="16" height="15" title="' . $lang['GOLD'] . '" />&nbsp;';
@ -2088,7 +2089,6 @@ function is_gold($type)
$is_gold = ''; $is_gold = '';
break; break;
} }
}
return $is_gold; return $is_gold;
} }

View file

@ -25,7 +25,7 @@
function run_jobs($jobs) function run_jobs($jobs)
{ {
global $bb_cfg, $tr_cfg, $datastore; global $bb_cfg, $datastore;
define('IN_CRON', true); define('IN_CRON', true);
@ -62,7 +62,7 @@ function run_jobs($jobs)
END END
WHERE cron_id IN ($jobs) WHERE cron_id IN ($jobs)
"); ");
sleep(3);
return; return;
} }

View file

@ -239,7 +239,7 @@ function change_tor_type($attach_id, $tor_status_gold)
function tracker_register($attach_id, $mode = '', $tor_status = TOR_NOT_APPROVED, $reg_time = TIMENOW) function tracker_register($attach_id, $mode = '', $tor_status = TOR_NOT_APPROVED, $reg_time = TIMENOW)
{ {
global $bb_cfg, $lang, $reg_mode, $tr_cfg; global $bb_cfg, $lang, $reg_mode;
$attach_id = (int)$attach_id; $attach_id = (int)$attach_id;
$reg_mode = $mode; $reg_mode = $mode;
@ -370,7 +370,7 @@ function tracker_register($attach_id, $mode = '', $tor_status = TOR_NOT_APPROVED
} }
} }
if ($tr_cfg['tor_topic_up']) { if ($bb_cfg['tracker']['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"); 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");
} }
@ -385,7 +385,7 @@ function tracker_register($attach_id, $mode = '', $tor_status = TOR_NOT_APPROVED
function send_torrent_with_passkey($filename) function send_torrent_with_passkey($filename)
{ {
global $attachment, $auth_pages, $userdata, $bb_cfg, $tr_cfg, $lang; global $attachment, $auth_pages, $userdata, $bb_cfg, $lang;
if (!$bb_cfg['bt_add_auth_key'] || $attachment['extension'] !== TORRENT_EXT || !$size = @filesize($filename)) { if (!$bb_cfg['bt_add_auth_key'] || $attachment['extension'] !== TORRENT_EXT || !$size = @filesize($filename)) {
return; return;
@ -477,15 +477,15 @@ function send_torrent_with_passkey($filename)
} }
// Add retracker // Add retracker
if (isset($tr_cfg['retracker']) && $tr_cfg['retracker']) { if (isset($bb_cfg['tracker']['retracker']) && $bb_cfg['tracker']['retracker']) {
if (bf($userdata['user_opt'], 'user_opt', 'user_retracker') || IS_GUEST) { if (bf($userdata['user_opt'], 'user_opt', 'user_retracker') || IS_GUEST) {
if (!isset($tor['announce-list'])) { if (!isset($tor['announce-list'])) {
$tor['announce-list'] = array( $tor['announce-list'] = array(
array($announce), array($announce),
array($tr_cfg['retracker_host']) array($bb_cfg['tracker']['retracker_host'])
); );
} else { } else {
$tor['announce-list'] = array_merge($tor['announce-list'], array(array($tr_cfg['retracker_host']))); $tor['announce-list'] = array_merge($tor['announce-list'], array(array($bb_cfg['tracker']['retracker_host'])));
} }
} }
} }
@ -505,7 +505,7 @@ function send_torrent_with_passkey($filename)
// Send torrent // Send torrent
$output = \Rych\Bencode\Bencode::encode($tor); $output = \Rych\Bencode\Bencode::encode($tor);
$dl_fname = ($bb_cfg['torrent_name_style'] ? '[' . $bb_cfg['server_name'] . '].t' . $topic_id . '.torrent' : clean_filename(basename($attachment['real_filename']))); $dl_fname = '[' . $bb_cfg['server_name'] . '].t' . $topic_id . '.torrent';
if (!empty($_COOKIE['explain'])) { if (!empty($_COOKIE['explain'])) {
$out = "attach path: $filename<br /><br />"; $out = "attach path: $filename<br /><br />";
@ -632,25 +632,20 @@ function ocelot_send_request($get, $max_attempts = 1, &$err = false)
global $bb_cfg; global $bb_cfg;
$header = "GET /$get HTTP/1.1\r\nConnection: Close\r\n\r\n"; $header = "GET /$get HTTP/1.1\r\nConnection: Close\r\n\r\n";
$attempts = $sleep = $success = $response = 0; $attempts = $success = $response = 0;
$start_time = microtime(true); $start_time = microtime(true);
while (!$success && $attempts++ < $max_attempts) { while (!$success && $attempts++ < $max_attempts) {
if ($sleep) {
sleep($sleep);
}
// Send request // Send request
$file = fsockopen($bb_cfg['ocelot']['host'], $bb_cfg['ocelot']['port'], $error_num, $error_string); $file = fsockopen($bb_cfg['ocelot']['host'], $bb_cfg['ocelot']['port'], $error_num, $error_string);
if ($file) { if ($file) {
if (fwrite($file, $header) === false) { if (fwrite($file, $header) === false) {
$err = "Failed to fwrite()"; $err = "Failed to fwrite()";
$sleep = 3;
continue; continue;
} }
} else { } else {
$err = "Failed to fsockopen() - $error_num - $error_string"; $err = "Failed to fsockopen() - $error_num - $error_string";
$sleep = 6;
continue; continue;
} }

View file

@ -26,17 +26,17 @@
if (!defined('BB_ROOT')) { if (!defined('BB_ROOT')) {
die(basename(__FILE__)); die(basename(__FILE__));
} }
/**
* Check PHP version
*/
if (version_compare(PHP_VERSION, '5.5', '<')) { if (version_compare(PHP_VERSION, '5.5', '<')) {
die('TorrentPier requires PHP version 5.5+. Your PHP version ' . PHP_VERSION); die('TorrentPier requires PHP version 5.5+. Your PHP version ' . PHP_VERSION);
} }
if (!defined('BB_SCRIPT')) {
define('BB_SCRIPT', 'undefined');
}
if (!defined('BB_CFG_LOADED')) {
trigger_error('File config.php not loaded', E_USER_ERROR);
}
// Define some basic configuration arrays /**
* Define some basic configuration arrays
*/
unset($stopwords, $synonyms_match, $synonyms_replace); unset($stopwords, $synonyms_match, $synonyms_replace);
$userdata = $theme = $images = $lang = $nav_links = $bf = $attach_config = []; $userdata = $theme = $images = $lang = $nav_links = $bf = $attach_config = [];
$gen_simple_header = false; $gen_simple_header = false;
@ -75,7 +75,9 @@ function compress_output($contents)
return $contents; return $contents;
} }
// Start output buffering /**
* Start output buffering
*/
if (!defined('IN_AJAX')) { if (!defined('IN_AJAX')) {
ob_start('send_page'); ob_start('send_page');
} }
@ -108,7 +110,9 @@ function bb_setcookie($name, $val, $lifetime = COOKIE_PERSIST, $httponly = false
return setcookie($name, $val, $lifetime, $bb_cfg['script_path'], $bb_cfg['cookie_domain'], $bb_cfg['cookie_secure'], $httponly); return setcookie($name, $val, $lifetime, $bb_cfg['script_path'], $bb_cfg['cookie_domain'], $bb_cfg['cookie_secure'], $httponly);
} }
// Debug options /**
* Debug options
*/
if (DBG_USER) { if (DBG_USER) {
ini_set('error_reporting', E_ALL); ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1); ini_set('display_errors', 1);
@ -213,62 +217,6 @@ define('POLL_FINISHED', 2);
// Group avatars // Group avatars
define('GROUP_AVATAR_MASK', 999000); define('GROUP_AVATAR_MASK', 999000);
// Иконки статусов
$bb_cfg['tor_icons'] = [
TOR_NOT_APPROVED => '<span class="tor-icon tor-not-approved">*</span>',
TOR_CLOSED => '<span class="tor-icon tor-closed">x</span>',
TOR_APPROVED => '<span class="tor-icon tor-approved">&radic;</span>',
TOR_NEED_EDIT => '<span class="tor-icon tor-need-edit">?</span>',
TOR_NO_DESC => '<span class="tor-icon tor-no-desc">!</span>',
TOR_DUP => '<span class="tor-icon tor-dup">D</span>',
TOR_CLOSED_CPHOLD => '<span class="tor-icon tor-closed-cp">&copy;</span>',
TOR_CONSUMED => '<span class="tor-icon tor-consumed">&sum;</span>',
TOR_DOUBTFUL => '<span class="tor-icon tor-approved">#</span>',
TOR_CHECKING => '<span class="tor-icon tor-checking">%</span>',
TOR_TMP => '<span class="tor-icon tor-dup">T</span>',
TOR_PREMOD => '<span class="tor-icon tor-dup">&#8719;</span>',
];
// Запрет на скачивание
$bb_cfg['tor_frozen'] = [
TOR_CHECKING => true,
TOR_CLOSED => true,
TOR_CLOSED_CPHOLD => true,
TOR_CONSUMED => true,
TOR_DUP => true,
TOR_NO_DESC => true,
TOR_PREMOD => true,
];
// Разрешение на скачку автором, если закрыто на скачивание.
$bb_cfg['tor_frozen_author_download'] = [
TOR_CHECKING => true,
TOR_NO_DESC => true,
TOR_PREMOD => true,
];
// Запрет на редактирование головного сообщения
$bb_cfg['tor_cannot_edit'] = [
TOR_CHECKING => true,
TOR_CLOSED => true,
TOR_CONSUMED => true,
TOR_DUP => true,
];
// Запрет на создание новых раздач если стоит статус недооформлено/неоформлено/сомнительно
$bb_cfg['tor_cannot_new'] = [TOR_NEED_EDIT, TOR_NO_DESC, TOR_DOUBTFUL];
// Разрешение на ответ релизера, если раздача исправлена.
$bb_cfg['tor_reply'] = [TOR_NEED_EDIT, TOR_NO_DESC, TOR_DOUBTFUL];
// Если такой статус у релиза, то статистика раздачи будет скрыта
$bb_cfg['tor_no_tor_act'] = [
TOR_CLOSED => true,
TOR_DUP => true,
TOR_CLOSED_CPHOLD => true,
TOR_CONSUMED => true,
];
$dl_link_css = [ $dl_link_css = [
DL_STATUS_RELEASER => 'genmed', DL_STATUS_RELEASER => 'genmed',
DL_STATUS_WILL => 'dlWill', DL_STATUS_WILL => 'dlWill',
@ -386,18 +334,6 @@ define('REQUEST', 4);
define('CHBOX', 5); define('CHBOX', 5);
define('SELECT', 6); define('SELECT', 6);
if (!empty($banned_user_agents)) {
foreach ($banned_user_agents as $agent) {
if (false !== strpos(USER_AGENT, $agent)) {
$filename = 'Download files by using browser';
$output = '@';
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="' . $filename . '"');
die($output);
}
}
}
// Functions // Functions
function send_no_cache_headers() function send_no_cache_headers()
{ {
@ -466,58 +402,68 @@ function make_url($path = '')
return FULL_URL . preg_replace('#^\/?(.*?)\/?$#', '\1', $path); return FULL_URL . preg_replace('#^\/?(.*?)\/?$#', '\1', $path);
} }
/**
* Functions
*/
require INC_DIR . '/functions.php'; require INC_DIR . '/functions.php';
require INC_DIR . '/sessions.php'; require INC_DIR . '/sessions.php';
$bb_cfg = array_merge(bb_get_config(BB_CONFIG), $bb_cfg);
$user = new TorrentPier\Legacy\Common\User();
$userdata =& $user->data;
if (DBG_USER) { if (DBG_USER) {
require INC_DIR . '/functions_dev.php'; require INC_DIR . '/functions_dev.php';
} }
$html = new TorrentPier\Legacy\Common\Html(); $bb_cfg = array_merge(bb_get_config(BB_CONFIG), $bb_cfg);
$log_action = new TorrentPier\Legacy\LogAction(); $log_action = new TorrentPier\Legacy\LogAction();
$html = new TorrentPier\Legacy\Common\Html();
$user = new TorrentPier\Legacy\Common\User();
// TODO temporarily 'cat_forums' always enqueued $userdata =& $user->data;
$datastore->enqueue(array('cat_forums'));
// Дата старта вашего проекта /**
if (!$bb_cfg['board_startdate']) { * Cron
bb_update_config(array('board_startdate' => TIMENOW)); */
DB()->query("UPDATE " . BB_USERS . " SET user_regdate = " . TIMENOW . " WHERE user_id IN(2, " . EXCLUDED_USERS . ")");
}
// Cron
if ((empty($_POST) && !defined('IN_ADMIN') && !defined('IN_AJAX') && !file_exists(CRON_RUNNING) && ($bb_cfg['cron_enabled'] || defined('START_CRON'))) || defined('FORCE_CRON')) { if ((empty($_POST) && !defined('IN_ADMIN') && !defined('IN_AJAX') && !file_exists(CRON_RUNNING) && ($bb_cfg['cron_enabled'] || defined('START_CRON'))) || defined('FORCE_CRON')) {
if (TIMENOW - $bb_cfg['cron_last_check'] > $bb_cfg['cron_check_interval']) { if (TIMENOW - $bb_cfg['cron_last_check'] > $bb_cfg['cron_check_interval']) {
// Update cron_last_check
bb_update_config(array('cron_last_check' => (TIMENOW + 10)));
define('CRON_LOG_ENABLED', true); // global ON/OFF
define('CRON_FORCE_LOG', false); // always log regardless of job settings
define('CRON_DIR', INC_DIR . '/cron/');
define('CRON_JOB_DIR', CRON_DIR . 'jobs/');
define('CRON_LOG_DIR', 'cron'); // inside LOG_DIR
define('CRON_LOG_FILE', 'cron'); // without ext
/** Update cron_last_check */
bb_update_config(['cron_last_check' => TIMENOW + 10]);
bb_log(date('H:i:s - ') . getmypid() . ' -x-- DB-LOCK try' . LOG_LF, CRON_LOG_DIR . '/cron_check'); bb_log(date('H:i:s - ') . getmypid() . ' -x-- DB-LOCK try' . LOG_LF, CRON_LOG_DIR . '/cron_check');
if (DB()->get_lock('cron', 1)) { if (DB()->get_lock('cron', 1)) {
bb_log(date('H:i:s - ') . getmypid() . ' --x- DB-LOCK OBTAINED !!!!!!!!!!!!!!!!!' . LOG_LF, CRON_LOG_DIR . '/cron_check'); bb_log(date('H:i:s - ') . getmypid() . ' --x- DB-LOCK OBTAINED !!!!!!!!!!!!!!!!!' . LOG_LF, CRON_LOG_DIR . '/cron_check');
sleep(2); /** Run cron */
require(CRON_DIR . 'cron_init.php'); if (TorrentPier\Helpers\CronHelper::hasFileLock()) {
/** снятие файловой блокировки */
register_shutdown_function(function () {
TorrentPier\Helpers\CronHelper::releaseLockFile();
});
/** разблокировка форума */
register_shutdown_function(function () {
TorrentPier\Helpers\CronHelper::enableBoard();
});
TorrentPier\Helpers\CronHelper::trackRunning('start');
require(CRON_DIR . 'cron_check.php');
TorrentPier\Helpers\CronHelper::trackRunning('end');
}
if (defined('IN_CRON')) {
bb_log(date('H:i:s - ') . getmypid() . ' --x- ALL jobs FINISHED *************************************************' . LOG_LF, CRON_LOG_DIR . '/cron_check');
}
DB()->release_lock('cron'); DB()->release_lock('cron');
} }
} }
} }
// Exit if board is disabled via ON/OFF trigger or by admin /**
* Exit if board is disabled via trigger
*/
if (($bb_cfg['board_disable'] || file_exists(BB_DISABLED)) && !defined('IN_ADMIN') && !defined('IN_AJAX') && !defined('IN_LOGIN')) { if (($bb_cfg['board_disable'] || file_exists(BB_DISABLED)) && !defined('IN_ADMIN') && !defined('IN_AJAX') && !defined('IN_LOGIN')) {
header('HTTP/1.0 503 Service Unavailable'); header('HTTP/1.0 503 Service Unavailable');
if ($bb_cfg['board_disable']) { if ($bb_cfg['board_disable']) {
@ -526,58 +472,8 @@ if (($bb_cfg['board_disable'] || file_exists(BB_DISABLED)) && !defined('IN_ADMIN
bb_die('BOARD_DISABLE'); bb_die('BOARD_DISABLE');
} elseif (file_exists(BB_DISABLED)) { } elseif (file_exists(BB_DISABLED)) {
// trigger lock // trigger lock
cron_release_deadlock(); TorrentPier\Helpers\CronHelper::releaseDeadlock();
send_no_cache_headers(); send_no_cache_headers();
bb_die('BOARD_DISABLE_CRON'); bb_die('BOARD_DISABLE_CRON');
} }
} }
/**
* Снятие блокировки крона
*/
function cron_release_deadlock()
{
if (file_exists(CRON_RUNNING)) {
if (TIMENOW - filemtime(CRON_RUNNING) > 2400) {
cron_enable_board();
cron_release_file_lock();
}
}
}
/**
* Блокировка крона
*/
function cron_release_file_lock()
{
rename(CRON_RUNNING, CRON_ALLOWED);
cron_touch_lock_file(CRON_ALLOWED);
}
/**
* @param $lock_file
*/
function cron_touch_lock_file($lock_file)
{
file_write(make_rand_str(20), $lock_file, 0, true, true);
}
/**
* Включение форума (при блокировке крона)
*/
function cron_enable_board()
{
if (file_exists(BB_DISABLED)) {
rename(BB_DISABLED, BB_ENABLED);
}
}
/**
* Отключение форума (при блокировке крона)
*/
function cron_disable_board()
{
if (file_exists(BB_ENABLED)) {
rename(BB_ENABLED, BB_DISABLED);
}
}

View file

@ -183,8 +183,8 @@ $template->assign_vars(array(
'U_TERMS' => $bb_cfg['terms_and_conditions_url'], 'U_TERMS' => $bb_cfg['terms_and_conditions_url'],
'U_TRACKER' => "tracker.php", 'U_TRACKER' => "tracker.php",
'SHOW_SIDEBAR1' => (!empty($page_cfg['show_sidebar1'][BB_SCRIPT]) || $bb_cfg['show_sidebar1_on_every_page']), 'SHOW_SIDEBAR1' => !empty($bb_cfg['page']['show_sidebar1'][BB_SCRIPT]) || $bb_cfg['show_sidebar1_on_every_page'],
'SHOW_SIDEBAR2' => (!empty($page_cfg['show_sidebar2'][BB_SCRIPT]) || $bb_cfg['show_sidebar2_on_every_page']), 'SHOW_SIDEBAR2' => !empty($bb_cfg['page']['show_sidebar2'][BB_SCRIPT]) || $bb_cfg['show_sidebar2_on_every_page'],
'HTML_AGREEMENT' => LANG_DIR . 'html/user_agreement.html', 'HTML_AGREEMENT' => LANG_DIR . 'html/user_agreement.html',
'HTML_COPYRIGHT' => LANG_DIR . 'html/copyright_holders.html', 'HTML_COPYRIGHT' => LANG_DIR . 'html/copyright_holders.html',
@ -226,7 +226,7 @@ $template->assign_vars(array(
'U_WATCHED_TOPICS' => "profile.php?mode=watch", 'U_WATCHED_TOPICS' => "profile.php?mode=watch",
)); ));
if (!empty($page_cfg['show_torhelp'][BB_SCRIPT]) && !empty($userdata['torhelp'])) { if (!empty($bb_cfg['page']['show_torhelp'][BB_SCRIPT]) && !empty($userdata['torhelp'])) {
$ignore_time = !empty($_COOKIE['torhelp']) ? (int)$_COOKIE['torhelp'] : 0; $ignore_time = !empty($_COOKIE['torhelp']) ? (int)$_COOKIE['torhelp'] : 0;
if (TIMENOW > $ignore_time) { if (TIMENOW > $ignore_time) {

View file

@ -1,2 +0,0 @@
order allow,deny
deny from all

View file

@ -31,6 +31,7 @@ require INC_DIR . '/bbcode.php';
$datastore->enqueue(array( $datastore->enqueue(array(
'ranks', 'ranks',
'cat_forums',
)); ));
if (empty($_GET[POST_USERS_URL]) || $_GET[POST_USERS_URL] == GUEST_UID) { if (empty($_GET[POST_USERS_URL]) || $_GET[POST_USERS_URL] == GUEST_UID) {

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forum instellings'; $lang['FORUM_CFG_TITLE'] = 'Forum instellings';
$lang['TRACKER_SETTINGS'] = 'Tracker instellings'; $lang['TRACKER_SETTINGS'] = 'Tracker instellings';
$lang['CHANGES_DISABLED'] = 'Veranderinge gedeaktiveer (sien <b>$tr_cfg</b> in config.php)'; $lang['CHANGES_DISABLED'] = 'Veranderinge gedeaktiveer (sien <b>$bb_cfg[\'tracker\']</b> in config.php)';
$lang['OFF_TRACKER'] = 'Deaktiveer spoorsnyer'; $lang['OFF_TRACKER'] = 'Deaktiveer spoorsnyer';
$lang['OFF_REASON'] = 'Deaktiveer rede'; $lang['OFF_REASON'] = 'Deaktiveer rede';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'تعقب';
$lang['FORUM_CFG_TITLE'] = 'المنتدى إعدادات'; $lang['FORUM_CFG_TITLE'] = 'المنتدى إعدادات';
$lang['TRACKER_SETTINGS'] = 'تعقب الإعدادات'; $lang['TRACKER_SETTINGS'] = 'تعقب الإعدادات';
$lang['CHANGES_DISABLED'] = 'التغييرات المعوقين (انظر <b>$tr_cfg</b> في config.php)'; $lang['CHANGES_DISABLED'] = 'التغييرات المعوقين (انظر <b>$bb_cfg[\'tracker\']</b> في config.php)';
$lang['OFF_TRACKER'] = 'تعطيل تعقب'; $lang['OFF_TRACKER'] = 'تعطيل تعقب';
$lang['OFF_REASON'] = 'تعطيل السبب'; $lang['OFF_REASON'] = 'تعطيل السبب';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Parametrlər forum'; $lang['FORUM_CFG_TITLE'] = 'Parametrlər forum';
$lang['TRACKER_SETTINGS'] = 'Parametrlər tracker'; $lang['TRACKER_SETTINGS'] = 'Parametrlər tracker';
$lang['CHANGES_DISABLED'] = 'Dəyişikliklər əlil (bax <b>$tr_cfg</b> bu config.php)'; $lang['CHANGES_DISABLED'] = 'Dəyişikliklər əlil (bax <b>$bb_cfg[\'tracker\']</b> bu config.php)';
$lang['OFF_TRACKER'] = 'Aradan tracker'; $lang['OFF_TRACKER'] = 'Aradan tracker';
$lang['OFF_REASON'] = 'Səbəbi kəsilməsi'; $lang['OFF_REASON'] = 'Səbəbi kəsilməsi';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Трэкер';
$lang['FORUM_CFG_TITLE'] = 'Налады форуму'; $lang['FORUM_CFG_TITLE'] = 'Налады форуму';
$lang['TRACKER_SETTINGS'] = 'Налады трэкера'; $lang['TRACKER_SETTINGS'] = 'Налады трэкера';
$lang['CHANGES_DISABLED'] = 'Змены адключаная (гл. <b>$tr_cfg</b> ў config.php)'; $lang['CHANGES_DISABLED'] = 'Змены адключаная (гл. <b>$bb_cfg[\'tracker\']</b> ў config.php)';
$lang['OFF_TRACKER'] = 'Адключыць трэкер'; $lang['OFF_TRACKER'] = 'Адключыць трэкер';
$lang['OFF_REASON'] = 'Прычына адключэння'; $lang['OFF_REASON'] = 'Прычына адключэння';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Следа';
$lang['FORUM_CFG_TITLE'] = 'Настройки на форума'; $lang['FORUM_CFG_TITLE'] = 'Настройки на форума';
$lang['TRACKER_SETTINGS'] = 'Настройки на тракера'; $lang['TRACKER_SETTINGS'] = 'Настройки на тракера';
$lang['CHANGES_DISABLED'] = 'Промяната е изключена (виж <b>$tr_cfg</b> в config.php)'; $lang['CHANGES_DISABLED'] = 'Промяната е изключена (виж <b>$bb_cfg[\'tracker\']</b> в config.php)';
$lang['OFF_TRACKER'] = 'Да забраните на тракера'; $lang['OFF_TRACKER'] = 'Да забраните на тракера';
$lang['OFF_REASON'] = 'Причината за прекъсване на'; $lang['OFF_REASON'] = 'Причината за прекъсване на';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tragač';
$lang['FORUM_CFG_TITLE'] = 'Forum postavke'; $lang['FORUM_CFG_TITLE'] = 'Forum postavke';
$lang['TRACKER_SETTINGS'] = 'Tragač postavke'; $lang['TRACKER_SETTINGS'] = 'Tragač postavke';
$lang['CHANGES_DISABLED'] = 'Promjene invalid (vidim u <b>$tr_cfg</b> config.php)'; $lang['CHANGES_DISABLED'] = 'Promjene invalid (vidim u <b>$bb_cfg[\'tracker\']</b> config.php)';
$lang['OFF_TRACKER'] = 'Onesposobiti tragaca'; $lang['OFF_TRACKER'] = 'Onesposobiti tragaca';
$lang['OFF_REASON'] = 'Onesposobite razloga'; $lang['OFF_REASON'] = 'Onesposobite razloga';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Seguidor';
$lang['FORUM_CFG_TITLE'] = 'Preferències del fòrum'; $lang['FORUM_CFG_TITLE'] = 'Preferències del fòrum';
$lang['TRACKER_SETTINGS'] = 'Seguidor de configuració'; $lang['TRACKER_SETTINGS'] = 'Seguidor de configuració';
$lang['CHANGES_DISABLED'] = 'Els canvis de persones amb discapacitat (vegeu <b>$tr_cfg</b> en config.php)'; $lang['CHANGES_DISABLED'] = 'Els canvis de persones amb discapacitat (vegeu <b>$bb_cfg[\'tracker\']</b> en config.php)';
$lang['OFF_TRACKER'] = 'Desactivar seguidor'; $lang['OFF_TRACKER'] = 'Desactivar seguidor';
$lang['OFF_REASON'] = 'Desactivar raó'; $lang['OFF_REASON'] = 'Desactivar raó';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Nastavení fóra'; $lang['FORUM_CFG_TITLE'] = 'Nastavení fóra';
$lang['TRACKER_SETTINGS'] = 'Tracker nastavení'; $lang['TRACKER_SETTINGS'] = 'Tracker nastavení';
$lang['CHANGES_DISABLED'] = 'Změny zakázány (viz <b>$tr_cfg</b> v config.php)'; $lang['CHANGES_DISABLED'] = 'Změny zakázány (viz <b>$bb_cfg[\'tracker\']</b> v config.php)';
$lang['OFF_TRACKER'] = 'Zakázat tracker'; $lang['OFF_TRACKER'] = 'Zakázat tracker';
$lang['OFF_REASON'] = 'Zakázat důvod'; $lang['OFF_REASON'] = 'Zakázat důvod';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forum-indstillinger'; $lang['FORUM_CFG_TITLE'] = 'Forum-indstillinger';
$lang['TRACKER_SETTINGS'] = 'Tracker-indstillinger'; $lang['TRACKER_SETTINGS'] = 'Tracker-indstillinger';
$lang['CHANGES_DISABLED'] = 'Ændringer deaktiveret (se <b>$tr_cfg</b> i config.php)'; $lang['CHANGES_DISABLED'] = 'Ændringer deaktiveret (se <b>$bb_cfg[\'tracker\']</b> i config.php)';
$lang['OFF_TRACKER'] = 'Deaktiver tracker'; $lang['OFF_TRACKER'] = 'Deaktiver tracker';
$lang['OFF_REASON'] = 'Deaktiver grund'; $lang['OFF_REASON'] = 'Deaktiver grund';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forum-Einstellungen'; $lang['FORUM_CFG_TITLE'] = 'Forum-Einstellungen';
$lang['TRACKER_SETTINGS'] = 'Tracker-Einstellungen'; $lang['TRACKER_SETTINGS'] = 'Tracker-Einstellungen';
$lang['CHANGES_DISABLED'] = 'Änderungen deaktiviert ist (siehe <b>$tr_cfg</b> in config.php)'; $lang['CHANGES_DISABLED'] = 'Änderungen deaktiviert ist (siehe <b>$bb_cfg[\'tracker\']</b> in config.php)';
$lang['OFF_TRACKER'] = 'Deaktivieren tracker'; $lang['OFF_TRACKER'] = 'Deaktivieren tracker';
$lang['OFF_REASON'] = 'Deaktivieren der Grund'; $lang['OFF_REASON'] = 'Deaktivieren der Grund';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Φόρουμ ρυθμίσεις'; $lang['FORUM_CFG_TITLE'] = 'Φόρουμ ρυθμίσεις';
$lang['TRACKER_SETTINGS'] = 'Tracker ρυθμίσεις'; $lang['TRACKER_SETTINGS'] = 'Tracker ρυθμίσεις';
$lang['CHANGES_DISABLED'] = 'Αλλαγές με αναπηρία (βλ. <b>$tr_cfg</b> σε config.php)'; $lang['CHANGES_DISABLED'] = 'Αλλαγές με αναπηρία (βλ. <b>$bb_cfg[\'tracker\']</b> σε config.php)';
$lang['OFF_TRACKER'] = 'Απενεργοποίηση tracker'; $lang['OFF_TRACKER'] = 'Απενεργοποίηση tracker';
$lang['OFF_REASON'] = 'Απενεργοποίηση λόγο'; $lang['OFF_REASON'] = 'Απενεργοποίηση λόγο';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forum settings'; $lang['FORUM_CFG_TITLE'] = 'Forum settings';
$lang['TRACKER_SETTINGS'] = 'Tracker settings'; $lang['TRACKER_SETTINGS'] = 'Tracker settings';
$lang['CHANGES_DISABLED'] = 'Changes disabled (see <b>$tr_cfg</b> in config.php)'; $lang['CHANGES_DISABLED'] = 'Changes disabled (see <b>$bb_cfg[\'tracker\']</b> in config.php)';
$lang['OFF_TRACKER'] = 'Disable tracker'; $lang['OFF_TRACKER'] = 'Disable tracker';
$lang['OFF_REASON'] = 'Disable reason'; $lang['OFF_REASON'] = 'Disable reason';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Rastreador';
$lang['FORUM_CFG_TITLE'] = 'En el foro de configuración'; $lang['FORUM_CFG_TITLE'] = 'En el foro de configuración';
$lang['TRACKER_SETTINGS'] = 'Rastreador de configuración'; $lang['TRACKER_SETTINGS'] = 'Rastreador de configuración';
$lang['CHANGES_DISABLED'] = 'Cambios en la movilidad (ver <b>$tr_cfg</b> en config.php)'; $lang['CHANGES_DISABLED'] = 'Cambios en la movilidad (ver <b>$bb_cfg[\'tracker\']</b> en config.php)';
$lang['OFF_TRACKER'] = 'Deshabilitar tracker'; $lang['OFF_TRACKER'] = 'Deshabilitar tracker';
$lang['OFF_REASON'] = 'Deshabilitar la razón'; $lang['OFF_REASON'] = 'Deshabilitar la razón';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Foorumi seaded'; $lang['FORUM_CFG_TITLE'] = 'Foorumi seaded';
$lang['TRACKER_SETTINGS'] = 'Tracker seaded'; $lang['TRACKER_SETTINGS'] = 'Tracker seaded';
$lang['CHANGES_DISABLED'] = 'Muudatused puudega (vt <b>$tr_cfg</b> aastal config.php)'; $lang['CHANGES_DISABLED'] = 'Muudatused puudega (vt <b>$bb_cfg[\'tracker\']</b> aastal config.php)';
$lang['OFF_TRACKER'] = 'Keelata tracker'; $lang['OFF_TRACKER'] = 'Keelata tracker';
$lang['OFF_REASON'] = 'Keelata põhjus'; $lang['OFF_REASON'] = 'Keelata põhjus';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Foorumin asetuksia'; $lang['FORUM_CFG_TITLE'] = 'Foorumin asetuksia';
$lang['TRACKER_SETTINGS'] = 'Tracker asetukset'; $lang['TRACKER_SETTINGS'] = 'Tracker asetukset';
$lang['CHANGES_DISABLED'] = 'Muutokset käytöstä (ks. <b>$tr_cfg</b> vuonna config.php)'; $lang['CHANGES_DISABLED'] = 'Muutokset käytöstä (ks. <b>$bb_cfg[\'tracker\']</b> vuonna config.php)';
$lang['OFF_TRACKER'] = 'Poistaa tracker'; $lang['OFF_TRACKER'] = 'Poistaa tracker';
$lang['OFF_REASON'] = 'Poistaa syy'; $lang['OFF_REASON'] = 'Poistaa syy';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Traqueur';
$lang['FORUM_CFG_TITLE'] = 'Les préférences du Forum'; $lang['FORUM_CFG_TITLE'] = 'Les préférences du Forum';
$lang['TRACKER_SETTINGS'] = 'Des paramètres d\'un suivi'; $lang['TRACKER_SETTINGS'] = 'Des paramètres d\'un suivi';
$lang['CHANGES_DISABLED'] = 'Les changements de personnes handicapées (voir <b>$tr_cfg</b> dans config.php)'; $lang['CHANGES_DISABLED'] = 'Les changements de personnes handicapées (voir <b>$bb_cfg[\'tracker\']</b> dans config.php)';
$lang['OFF_TRACKER'] = 'Désactiver le tracker'; $lang['OFF_TRACKER'] = 'Désactiver le tracker';
$lang['OFF_REASON'] = 'Désactiver la raison'; $lang['OFF_REASON'] = 'Désactiver la raison';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'פורום הגדרות'; $lang['FORUM_CFG_TITLE'] = 'פורום הגדרות';
$lang['TRACKER_SETTINGS'] = 'גשש הגדרות'; $lang['TRACKER_SETTINGS'] = 'גשש הגדרות';
$lang['CHANGES_DISABLED'] = 'שינויים נכים (לראות <b>$tr_cfg</b> ב config.php)'; $lang['CHANGES_DISABLED'] = 'שינויים נכים (לראות <b>$bb_cfg[\'tracker\']</b> ב config.php)';
$lang['OFF_TRACKER'] = 'השבת tracker'; $lang['OFF_TRACKER'] = 'השבת tracker';
$lang['OFF_REASON'] = 'השבת סיבה'; $lang['OFF_REASON'] = 'השבת סיבה';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'ट्रैकर';
$lang['FORUM_CFG_TITLE'] = 'फ़ोरम सेटिंग'; $lang['FORUM_CFG_TITLE'] = 'फ़ोरम सेटिंग';
$lang['TRACKER_SETTINGS'] = 'ट्रैकर सेटिंग्स'; $lang['TRACKER_SETTINGS'] = 'ट्रैकर सेटिंग्स';
$lang['CHANGES_DISABLED'] = 'परिवर्तन अक्षम (config.php में <b>$tr_cfg</b> देखें)'; $lang['CHANGES_DISABLED'] = 'परिवर्तन अक्षम (config.php में <b>$bb_cfg[\'tracker\']</b> देखें)';
$lang['OFF_TRACKER'] = 'ट्रैकर अक्षम करें'; $lang['OFF_TRACKER'] = 'ट्रैकर अक्षम करें';
$lang['OFF_REASON'] = 'कारण अक्षम करें'; $lang['OFF_REASON'] = 'कारण अक्षम करें';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Postavke foruma'; $lang['FORUM_CFG_TITLE'] = 'Postavke foruma';
$lang['TRACKER_SETTINGS'] = 'Postavke tracker'; $lang['TRACKER_SETTINGS'] = 'Postavke tracker';
$lang['CHANGES_DISABLED'] = 'Promjena je deaktivirana (pogledajte <b>$tr_cfg</b> u config.php)'; $lang['CHANGES_DISABLED'] = 'Promjena je deaktivirana (pogledajte <b>$bb_cfg[\'tracker\']</b> u config.php)';
$lang['OFF_TRACKER'] = 'Isključiti tracker'; $lang['OFF_TRACKER'] = 'Isključiti tracker';
$lang['OFF_REASON'] = 'Razlog za isključenje'; $lang['OFF_REASON'] = 'Razlog za isključenje';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Fórum beállítások'; $lang['FORUM_CFG_TITLE'] = 'Fórum beállítások';
$lang['TRACKER_SETTINGS'] = 'Tracker beállítások'; $lang['TRACKER_SETTINGS'] = 'Tracker beállítások';
$lang['CHANGES_DISABLED'] = 'Változások a disabled (lásd a <b>$tr_cfg</b> config.php)'; $lang['CHANGES_DISABLED'] = 'Változások a disabled (lásd a <b>$bb_cfg[\'tracker\']</b> config.php)';
$lang['OFF_TRACKER'] = 'Tiltsa le tracker'; $lang['OFF_TRACKER'] = 'Tiltsa le tracker';
$lang['OFF_REASON'] = 'A letiltás oka'; $lang['OFF_REASON'] = 'A letiltás oka';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Ճանապարհները';
$lang['FORUM_CFG_TITLE'] = 'Ֆորումի կառավարում'; $lang['FORUM_CFG_TITLE'] = 'Ֆորումի կառավարում';
$lang['TRACKER_SETTINGS'] = 'Կառավարում ճանապարհները'; $lang['TRACKER_SETTINGS'] = 'Կառավարում ճանապարհները';
$lang['CHANGES_DISABLED'] = 'Փոփոխություններ անջատված է (տես <b>$tr_cfg</b> է config.php)'; $lang['CHANGES_DISABLED'] = 'Փոփոխություններ անջատված է (տես <b>$bb_cfg[\'tracker\']</b> է config.php)';
$lang['OFF_TRACKER'] = 'Անջատել tracker'; $lang['OFF_TRACKER'] = 'Անջատել tracker';
$lang['OFF_REASON'] = 'Պատճառը պարապուրդ'; $lang['OFF_REASON'] = 'Պատճառը պարապուրդ';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forum pengaturan'; $lang['FORUM_CFG_TITLE'] = 'Forum pengaturan';
$lang['TRACKER_SETTINGS'] = 'Tracker pengaturan'; $lang['TRACKER_SETTINGS'] = 'Tracker pengaturan';
$lang['CHANGES_DISABLED'] = 'Perubahan dinonaktifkan (lihat <b>$tr_cfg</b> di config.php)'; $lang['CHANGES_DISABLED'] = 'Perubahan dinonaktifkan (lihat <b>$bb_cfg[\'tracker\']</b> di config.php)';
$lang['OFF_TRACKER'] = 'Menonaktifkan tracker'; $lang['OFF_TRACKER'] = 'Menonaktifkan tracker';
$lang['OFF_REASON'] = 'Menonaktifkan alasan'; $lang['OFF_REASON'] = 'Menonaktifkan alasan';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Le impostazioni del Forum'; $lang['FORUM_CFG_TITLE'] = 'Le impostazioni del Forum';
$lang['TRACKER_SETTINGS'] = 'Tracker impostazioni'; $lang['TRACKER_SETTINGS'] = 'Tracker impostazioni';
$lang['CHANGES_DISABLED'] = 'Modifiche per disabili (vedi <b>$tr_cfg</b> in config.php)'; $lang['CHANGES_DISABLED'] = 'Modifiche per disabili (vedi <b>$bb_cfg[\'tracker\']</b> in config.php)';
$lang['OFF_TRACKER'] = 'Disattivare tracker'; $lang['OFF_TRACKER'] = 'Disattivare tracker';
$lang['OFF_REASON'] = 'Disattivare ragione'; $lang['OFF_REASON'] = 'Disattivare ragione';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'トラッカー';
$lang['FORUM_CFG_TITLE'] = 'フォーラムの設定'; $lang['FORUM_CFG_TITLE'] = 'フォーラムの設定';
$lang['TRACKER_SETTINGS'] = 'トラッカーの設定'; $lang['TRACKER_SETTINGS'] = 'トラッカーの設定';
$lang['CHANGES_DISABLED'] = 'の変更無効(<b>$tr_cfg</b>にconfig.php)'; $lang['CHANGES_DISABLED'] = 'の変更無効(<b>$bb_cfg[\'tracker\']</b>にconfig.php)';
$lang['OFF_TRACKER'] = 'トラッカーを無効に'; $lang['OFF_TRACKER'] = 'トラッカーを無効に';
$lang['OFF_REASON'] = '無効理由'; $lang['OFF_REASON'] = '無効理由';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'ფორუმის პარამეტრები'; $lang['FORUM_CFG_TITLE'] = 'ფორუმის პარამეტრები';
$lang['TRACKER_SETTINGS'] = 'Tracker პარამეტრები'; $lang['TRACKER_SETTINGS'] = 'Tracker პარამეტრები';
$lang['CHANGES_DISABLED'] = 'ცვლილებები შეზღუდული შესაძლებლობის მქონე პირთა (იხილეთ <b>$tr_cfg</b> in config.php)'; $lang['CHANGES_DISABLED'] = 'ცვლილებები შეზღუდული შესაძლებლობის მქონე პირთა (იხილეთ <b>$bb_cfg[\'tracker\']</b> in config.php)';
$lang['OFF_TRACKER'] = 'გამორთე tracker'; $lang['OFF_TRACKER'] = 'გამორთე tracker';
$lang['OFF_REASON'] = 'გამორთე მიზეზი'; $lang['OFF_REASON'] = 'გამორთე მიზეზი';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Форум параметрлері'; $lang['FORUM_CFG_TITLE'] = 'Форум параметрлері';
$lang['TRACKER_SETTINGS'] = 'Tracker параметрлері'; $lang['TRACKER_SETTINGS'] = 'Tracker параметрлері';
$lang['CHANGES_DISABLED'] = 'өшірілген өзгерістер (config.php жылы <b>$tr_cfg</b> қараңыз)'; $lang['CHANGES_DISABLED'] = 'Өшірілген өзгерістер (config.php жылы <b>$bb_cfg[\'tracker\']</b> қараңыз)';
$lang['OFF_TRACKER'] = 'трекер өшіру'; $lang['OFF_TRACKER'] = 'трекер өшіру';
$lang['OFF_REASON'] = 'өшіру себебі'; $lang['OFF_REASON'] = 'өшіру себебі';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = '추적';
$lang['FORUM_CFG_TITLE'] = '포럼 설정'; $lang['FORUM_CFG_TITLE'] = '포럼 설정';
$lang['TRACKER_SETTINGS'] = '추적 설정'; $lang['TRACKER_SETTINGS'] = '추적 설정';
$lang['CHANGES_DISABLED'] = '변화(<b>$tr_cfg</b> 에 config.php 다)'; $lang['CHANGES_DISABLED'] = '변화(<b>$bb_cfg[\'tracker\']</b> 에 config.php 다)';
$lang['OFF_TRACKER'] = '비활성화 추적자'; $lang['OFF_TRACKER'] = '비활성화 추적자';
$lang['OFF_REASON'] = '사는 이유'; $lang['OFF_REASON'] = '사는 이유';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forumo nustatymai'; $lang['FORUM_CFG_TITLE'] = 'Forumo nustatymai';
$lang['TRACKER_SETTINGS'] = 'Tracker parametrai'; $lang['TRACKER_SETTINGS'] = 'Tracker parametrai';
$lang['CHANGES_DISABLED'] = 'Pokyčiai išjungtas (žr. <b>$tr_cfg</b>, config.php)'; $lang['CHANGES_DISABLED'] = 'Pokyčiai išjungtas (žr. <b>$bb_cfg[\'tracker\']</b>, config.php)';
$lang['OFF_TRACKER'] = 'Išjungti tracker'; $lang['OFF_TRACKER'] = 'Išjungti tracker';
$lang['OFF_REASON'] = 'Išjungti priežastis'; $lang['OFF_REASON'] = 'Išjungti priežastis';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Foruma uzstādījumi'; $lang['FORUM_CFG_TITLE'] = 'Foruma uzstādījumi';
$lang['TRACKER_SETTINGS'] = 'Tracker uzstādījumi'; $lang['TRACKER_SETTINGS'] = 'Tracker uzstādījumi';
$lang['CHANGES_DISABLED'] = 'Izmaiņas invalīdiem (skatīt <b>$tr_cfg</b>, config.php)'; $lang['CHANGES_DISABLED'] = 'Izmaiņas invalīdiem (skatīt <b>$bb_cfg[\'tracker\']</b>, config.php)';
$lang['OFF_TRACKER'] = 'Atspējot tracker'; $lang['OFF_TRACKER'] = 'Atspējot tracker';
$lang['OFF_REASON'] = 'Atspējot iemesls'; $lang['OFF_REASON'] = 'Atspējot iemesls';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forum instellingen'; $lang['FORUM_CFG_TITLE'] = 'Forum instellingen';
$lang['TRACKER_SETTINGS'] = 'Tracker instellingen'; $lang['TRACKER_SETTINGS'] = 'Tracker instellingen';
$lang['CHANGES_DISABLED'] = 'Wijzigingen uitgeschakeld (zie <b>$tr_cfg</b> in config.php)'; $lang['CHANGES_DISABLED'] = 'Wijzigingen uitgeschakeld (zie <b>$bb_cfg[\'tracker\']</b> in config.php)';
$lang['OFF_TRACKER'] = 'Uitschakelen tracker'; $lang['OFF_TRACKER'] = 'Uitschakelen tracker';
$lang['OFF_REASON'] = 'Uitschakelen reden'; $lang['OFF_REASON'] = 'Uitschakelen reden';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forum innstillinger'; $lang['FORUM_CFG_TITLE'] = 'Forum innstillinger';
$lang['TRACKER_SETTINGS'] = 'Tracker-innstillinger'; $lang['TRACKER_SETTINGS'] = 'Tracker-innstillinger';
$lang['CHANGES_DISABLED'] = 'Endringer deaktivert (se <b>$tr_cfg</b> i config.php)'; $lang['CHANGES_DISABLED'] = 'Endringer deaktivert (se <b>$bb_cfg[\'tracker\']</b> i config.php)';
$lang['OFF_TRACKER'] = 'Deaktiver tracker'; $lang['OFF_TRACKER'] = 'Deaktiver tracker';
$lang['OFF_REASON'] = 'Deaktiver grunn'; $lang['OFF_REASON'] = 'Deaktiver grunn';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Ustawienia forum'; $lang['FORUM_CFG_TITLE'] = 'Ustawienia forum';
$lang['TRACKER_SETTINGS'] = 'Ustawienia tracker'; $lang['TRACKER_SETTINGS'] = 'Ustawienia tracker';
$lang['CHANGES_DISABLED'] = 'Zmiany wyłączona (patrz <b>$tr_cfg</b> w config.php)'; $lang['CHANGES_DISABLED'] = 'Zmiany wyłączona (patrz <b>$bb_cfg[\'tracker\']</b> w config.php)';
$lang['OFF_TRACKER'] = 'Wyłączyć tracker'; $lang['OFF_TRACKER'] = 'Wyłączyć tracker';
$lang['OFF_REASON'] = 'Powodem wyłączenia'; $lang['OFF_REASON'] = 'Powodem wyłączenia';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Perseguidor';
$lang['FORUM_CFG_TITLE'] = 'Fórum de configurações'; $lang['FORUM_CFG_TITLE'] = 'Fórum de configurações';
$lang['TRACKER_SETTINGS'] = 'Tracker definições'; $lang['TRACKER_SETTINGS'] = 'Tracker definições';
$lang['CHANGES_DISABLED'] = 'Alterações desativada (consulte <b>$tr_cfg</b> em config.php)'; $lang['CHANGES_DISABLED'] = 'Alterações desativada (consulte <b>$bb_cfg[\'tracker\']</b> em config.php)';
$lang['OFF_TRACKER'] = 'Desativar o rastreador'; $lang['OFF_TRACKER'] = 'Desativar o rastreador';
$lang['OFF_REASON'] = 'Desactivar a razão'; $lang['OFF_REASON'] = 'Desactivar a razão';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Setări Forum'; $lang['FORUM_CFG_TITLE'] = 'Setări Forum';
$lang['TRACKER_SETTINGS'] = 'Tracker setări'; $lang['TRACKER_SETTINGS'] = 'Tracker setări';
$lang['CHANGES_DISABLED'] = 'Modificări cu handicap (a se vedea <b>$tr_cfg</b> în config.php)'; $lang['CHANGES_DISABLED'] = 'Modificări cu handicap (a se vedea <b>$bb_cfg[\'tracker\']</b> în config.php)';
$lang['OFF_TRACKER'] = 'Dezactivați tracker'; $lang['OFF_TRACKER'] = 'Dezactivați tracker';
$lang['OFF_REASON'] = 'Dezactivare motiv'; $lang['OFF_REASON'] = 'Dezactivare motiv';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Трекер';
$lang['FORUM_CFG_TITLE'] = 'Настройки форумов'; $lang['FORUM_CFG_TITLE'] = 'Настройки форумов';
$lang['TRACKER_SETTINGS'] = 'Настройки трекера'; $lang['TRACKER_SETTINGS'] = 'Настройки трекера';
$lang['CHANGES_DISABLED'] = 'Изменения недоступны (редактируйте <b>$tr_cfg</b> в файле config.php)'; $lang['CHANGES_DISABLED'] = 'Изменения недоступны (редактируйте <b>$bb_cfg[\'tracker\']</b> в файле config.php)';
$lang['OFF_TRACKER'] = 'Отключить трекер'; $lang['OFF_TRACKER'] = 'Отключить трекер';
$lang['OFF_REASON'] = 'Причина отключения'; $lang['OFF_REASON'] = 'Причина отключения';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Fórum nastavenia'; $lang['FORUM_CFG_TITLE'] = 'Fórum nastavenia';
$lang['TRACKER_SETTINGS'] = 'Tracker nastavenia'; $lang['TRACKER_SETTINGS'] = 'Tracker nastavenia';
$lang['CHANGES_DISABLED'] = 'Zmeny zakázané (pozri <b>$tr_cfg</b> v config.php)'; $lang['CHANGES_DISABLED'] = 'Zmeny zakázané (pozri <b>$bb_cfg[\'tracker\']</b> v config.php)';
$lang['OFF_TRACKER'] = 'Vypnúť tracker'; $lang['OFF_TRACKER'] = 'Vypnúť tracker';
$lang['OFF_REASON'] = 'Vypnúť dôvod'; $lang['OFF_REASON'] = 'Vypnúť dôvod';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forum nastavitve'; $lang['FORUM_CFG_TITLE'] = 'Forum nastavitve';
$lang['TRACKER_SETTINGS'] = 'Tracker nastavitve'; $lang['TRACKER_SETTINGS'] = 'Tracker nastavitve';
$lang['CHANGES_DISABLED'] = 'Spremembe invalide (glej <b>$tr_cfg</b> v config.php)'; $lang['CHANGES_DISABLED'] = 'Spremembe invalide (glej <b>$bb_cfg[\'tracker\']</b> v config.php)';
$lang['OFF_TRACKER'] = 'Onemogočite tracker'; $lang['OFF_TRACKER'] = 'Onemogočite tracker';
$lang['OFF_REASON'] = 'Onemogočite razlog'; $lang['OFF_REASON'] = 'Onemogočite razlog';

View file

@ -7,5 +7,5 @@
<li>style/templates/default/page_footer.tpl</li> <li>style/templates/default/page_footer.tpl</li>
</ul> </ul>
<br /> <br />
To disable this sidebar, set the variable $page_cfg['show_sidebar2'] in file config.php to false. To disable this sidebar, set the variable $bb_cfg['page']['show_sidebar2'] in file config.php to false.
</div> </div>

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forum settings'; $lang['FORUM_CFG_TITLE'] = 'Forum settings';
$lang['TRACKER_SETTINGS'] = 'Tracker settings'; $lang['TRACKER_SETTINGS'] = 'Tracker settings';
$lang['CHANGES_DISABLED'] = 'Changes disabled (see <b>$tr_cfg</b> in config.php)'; $lang['CHANGES_DISABLED'] = 'Changes disabled (see <b>$bb_cfg[\'tracker\']</b> in config.php)';
$lang['OFF_TRACKER'] = 'Disable tracker'; $lang['OFF_TRACKER'] = 'Disable tracker';
$lang['OFF_REASON'] = 'Disable reason'; $lang['OFF_REASON'] = 'Disable reason';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forumi cilësimet'; $lang['FORUM_CFG_TITLE'] = 'Forumi cilësimet';
$lang['TRACKER_SETTINGS'] = 'Tracker cilësimet'; $lang['TRACKER_SETTINGS'] = 'Tracker cilësimet';
$lang['CHANGES_DISABLED'] = 'Ndryshimet me aftësi të kufizuara (shih <b>$tr_cfg</b> në config.php)'; $lang['CHANGES_DISABLED'] = 'Ndryshimet me aftësi të kufizuara (shih <b>$bb_cfg[\'tracker\']</b> në config.php)';
$lang['OFF_TRACKER'] = 'Çaktivizoni tracker'; $lang['OFF_TRACKER'] = 'Çaktivizoni tracker';
$lang['OFF_REASON'] = 'Çaktivizoni arsye'; $lang['OFF_REASON'] = 'Çaktivizoni arsye';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Трацкер';
$lang['FORUM_CFG_TITLE'] = 'Подешавања форума'; $lang['FORUM_CFG_TITLE'] = 'Подешавања форума';
$lang['TRACKER_SETTINGS'] = 'Подешавања трацкер'; $lang['TRACKER_SETTINGS'] = 'Подешавања трацкер';
$lang['CHANGES_DISABLED'] = 'Промене искључена (видети <b>$tr_cfg</b> у config.php)'; $lang['CHANGES_DISABLED'] = 'Промене искључена (видети <b>$bb_cfg[\'tracker\']</b> у config.php)';
$lang['OFF_TRACKER'] = 'Искључите трацкер'; $lang['OFF_TRACKER'] = 'Искључите трацкер';
$lang['OFF_REASON'] = 'Разлог искључења'; $lang['OFF_REASON'] = 'Разлог искључења';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Tracker';
$lang['FORUM_CFG_TITLE'] = 'Forum inställningar'; $lang['FORUM_CFG_TITLE'] = 'Forum inställningar';
$lang['TRACKER_SETTINGS'] = 'Tracker-inställningar'; $lang['TRACKER_SETTINGS'] = 'Tracker-inställningar';
$lang['CHANGES_DISABLED'] = 'Förändringar funktionshindrade (se <b>$tr_cfg</b> i config.php)'; $lang['CHANGES_DISABLED'] = 'Förändringar funktionshindrade (se <b>$bb_cfg[\'tracker\']</b> i config.php)';
$lang['OFF_TRACKER'] = 'Inaktivera tracker'; $lang['OFF_TRACKER'] = 'Inaktivera tracker';
$lang['OFF_REASON'] = 'Inaktivera anledning'; $lang['OFF_REASON'] = 'Inaktivera anledning';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Назоратчии';
$lang['FORUM_CFG_TITLE'] = 'танзимоти Озодӣ'; $lang['FORUM_CFG_TITLE'] = 'танзимоти Озодӣ';
$lang['TRACKER_SETTINGS'] = 'танзимоти Назоратчии'; $lang['TRACKER_SETTINGS'] = 'танзимоти Назоратчии';
$lang['CHANGES_DISABLED'] = 'Тағйирҳои маъюбон (<b>$tr_cfg</b> дар config.php нигаред)'; $lang['CHANGES_DISABLED'] = 'Тағйирҳои маъюбон (<b>$bb_cfg[\'tracker\']</b> дар config.php нигаред)';
$lang['OFF_TRACKER'] = 'Назоратчии хомӯш'; $lang['OFF_TRACKER'] = 'Назоратчии хомӯш';
$lang['OFF_REASON'] = 'сабаби хомӯш'; $lang['OFF_REASON'] = 'сабаби хомӯш';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'แทร็กเกอร์';
$lang['FORUM_CFG_TITLE'] = 'อภิปราการตั้งค่า'; $lang['FORUM_CFG_TITLE'] = 'อภิปราการตั้งค่า';
$lang['TRACKER_SETTINGS'] = 'ตัวติดตามการตั้งค่า'; $lang['TRACKER_SETTINGS'] = 'ตัวติดตามการตั้งค่า';
$lang['CHANGES_DISABLED'] = 'เปลี่ยนแปลงปิดการใช้งาน(ดู <b>$tr_cfg</b> ใน config.php)'; $lang['CHANGES_DISABLED'] = 'เปลี่ยนแปลงปิดการใช้งาน(ดู <b>$bb_cfg[\'tracker\']</b> ใน config.php)';
$lang['OFF_TRACKER'] = 'ปิดการใช้งานแทร็กเกอร์'; $lang['OFF_TRACKER'] = 'ปิดการใช้งานแทร็กเกอร์';
$lang['OFF_REASON'] = 'ปิดการใช้เหตุผล'; $lang['OFF_REASON'] = 'ปิดการใช้เหตุผล';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'İzci';
$lang['FORUM_CFG_TITLE'] = 'Forum Ayarları'; $lang['FORUM_CFG_TITLE'] = 'Forum Ayarları';
$lang['TRACKER_SETTINGS'] = 'İzleyici ayarları'; $lang['TRACKER_SETTINGS'] = 'İzleyici ayarları';
$lang['CHANGES_DISABLED'] = 'Config.php engelli değişiklikler (bkz <b>$tr_cfg</b>)'; $lang['CHANGES_DISABLED'] = 'Config.php engelli değişiklikler (bkz <b>$bb_cfg[\'tracker\']</b>)';
$lang['OFF_TRACKER'] = 'Devre dışı bırakmak tracker'; $lang['OFF_TRACKER'] = 'Devre dışı bırakmak tracker';
$lang['OFF_REASON'] = 'Devre dışı bırakma nedeni'; $lang['OFF_REASON'] = 'Devre dışı bırakma nedeni';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Трекер';
$lang['FORUM_CFG_TITLE'] = 'Налаштування форумів'; $lang['FORUM_CFG_TITLE'] = 'Налаштування форумів';
$lang['TRACKER_SETTINGS'] = 'Налаштування трекера'; $lang['TRACKER_SETTINGS'] = 'Налаштування трекера';
$lang['CHANGES_DISABLED'] = 'Зміни недоступні (редагуйте <b>$tr_cfg</b> у файлі config.php)'; $lang['CHANGES_DISABLED'] = 'Зміни відключена (див. в <b>$bb_cfg[\'tracker\']</b> config.php)';
$lang['OFF_TRACKER'] = 'Відключити трекер'; $lang['OFF_TRACKER'] = 'Відключити трекер';
$lang['OFF_REASON'] = 'Причина відключення'; $lang['OFF_REASON'] = 'Причина відключення';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Kuzatishdan';
$lang['FORUM_CFG_TITLE'] = 'Forum ri'; $lang['FORUM_CFG_TITLE'] = 'Forum ri';
$lang['TRACKER_SETTINGS'] = 'Kuzatishdan sozlamalari'; $lang['TRACKER_SETTINGS'] = 'Kuzatishdan sozlamalari';
$lang['CHANGES_DISABLED'] = 'O\'zgarishlar o\'chirib (config.php yilda <b>$tr_cfg</b> qarang)'; $lang['CHANGES_DISABLED'] = 'O\'zgarishlar o\'chirib (config.php yilda <b>$bb_cfg[\'tracker\']</b> qarang)';
$lang['OFF_TRACKER'] = 'O\'chirish Kuzatishdan'; $lang['OFF_TRACKER'] = 'O\'chirish Kuzatishdan';
$lang['OFF_REASON'] = 'O\'chirish sababi'; $lang['OFF_REASON'] = 'O\'chirish sababi';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = 'Theo dõi';
$lang['FORUM_CFG_TITLE'] = 'Diễn đàn cài đặt'; $lang['FORUM_CFG_TITLE'] = 'Diễn đàn cài đặt';
$lang['TRACKER_SETTINGS'] = 'Thiết lập theo dõi'; $lang['TRACKER_SETTINGS'] = 'Thiết lập theo dõi';
$lang['CHANGES_DISABLED'] = 'Thay đổi vô hiệu hóa (thấy trong <b>$tr_cfg</b> config.php)'; $lang['CHANGES_DISABLED'] = 'Thay đổi vô hiệu hóa (thấy trong <b>$bb_cfg[\'tracker\']</b> config.php)';
$lang['OFF_TRACKER'] = 'Vô hiệu hóa theo dõi'; $lang['OFF_TRACKER'] = 'Vô hiệu hóa theo dõi';
$lang['OFF_REASON'] = 'Vô hiệu hóa lý do'; $lang['OFF_REASON'] = 'Vô hiệu hóa lý do';

View file

@ -2278,7 +2278,7 @@ $lang['TRACKER_CFG_TITLE'] = '跟踪器';
$lang['FORUM_CFG_TITLE'] = '论坛设置'; $lang['FORUM_CFG_TITLE'] = '论坛设置';
$lang['TRACKER_SETTINGS'] = '跟踪设置'; $lang['TRACKER_SETTINGS'] = '跟踪设置';
$lang['CHANGES_DISABLED'] = '变化无障碍(见<b>$tr_cfg</b>在config.php)'; $lang['CHANGES_DISABLED'] = '变化无障碍(见<b>$bb_cfg[\'tracker\']</b>在config.php)';
$lang['OFF_TRACKER'] = '禁止跟踪器'; $lang['OFF_TRACKER'] = '禁止跟踪器';
$lang['OFF_REASON'] = '禁止的原因'; $lang['OFF_REASON'] = '禁止的原因';

135
src/Helpers/CronHelper.php Normal file
View file

@ -0,0 +1,135 @@
<?php
/**
* MIT License
*
* Copyright (c) 2005-2017 TorrentPier
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
namespace TorrentPier\Helpers;
/**
* Class CronHelper
* @package TorrentPier\Helpers
*/
class CronHelper
{
/**
* Снятие блокировки крона (по времени)
*
* @return void
*/
public static function releaseDeadlock()
{
if (file_exists(CRON_RUNNING)) {
if (TIMENOW - filemtime(CRON_RUNNING) > 2400) {
self::enableBoard();
self::releaseLockFile();
}
}
}
/**
* Снятие блокировки крона (по файлу)
*
* @return void
*/
public static function releaseLockFile()
{
rename(CRON_RUNNING, CRON_ALLOWED);
self::touchLockFile(CRON_ALLOWED);
}
/**
* Создание файла блокировки
*
* @param $lock_file
*
* @return void
*/
public static function touchLockFile($lock_file)
{
file_write(make_rand_str(20), $lock_file, 0, true, true);
}
/**
* Включение форума (при разблокировке крона)
*
* @return void
*/
public static function enableBoard()
{
if (file_exists(BB_DISABLED)) {
rename(BB_DISABLED, BB_ENABLED);
}
}
/**
* Отключение форума (при блокировке крона)
*
* @return void
*/
public static function disableBoard()
{
if (file_exists(BB_ENABLED)) {
rename(BB_ENABLED, BB_DISABLED);
}
}
/**
* Проверка наличия файла блокировки
*
* @return bool
*/
public static function hasFileLock()
{
$lock_obtained = false;
if (file_exists(CRON_ALLOWED)) {
$lock_obtained = rename(CRON_ALLOWED, CRON_RUNNING);
} elseif (file_exists(CRON_RUNNING)) {
self::releaseDeadlock();
} elseif (!file_exists(CRON_ALLOWED) && !file_exists(CRON_RUNNING)) {
file_write('', CRON_ALLOWED);
$lock_obtained = rename(CRON_ALLOWED, CRON_RUNNING);
}
return $lock_obtained;
}
/**
* Отслеживание запуска задач
*
* @param $mode
*/
public static function trackRunning($mode)
{
if (!defined('START_MARK')) {
define('START_MARK', TRIGGERS_DIR . '/cron_started_at_' . date('Y-m-d_H-i-s') . '_by_pid_' . getmypid());
}
if ($mode === 'start') {
self::touchLockFile(CRON_RUNNING);
file_write('', START_MARK);
} elseif ($mode === 'end') {
unlink(START_MARK);
}
}
}

View file

@ -111,7 +111,7 @@ class SqlDb
*/ */
public function connect() public function connect()
{ {
$this->cur_query = ($this->dbg_enabled) ? "connect to: {$this->cfg['dbhost']}" : 'connect'; $this->cur_query = $this->dbg_enabled ? "connect to: {$this->cfg['dbhost']}" : 'connect';
$this->debug('start'); $this->debug('start');
$p = ((bool)$this->cfg['persist']) ? 'p:' : ''; $p = ((bool)$this->cfg['persist']) ? 'p:' : '';
@ -119,7 +119,7 @@ class SqlDb
$this->selected_db = $this->cfg['dbname']; $this->selected_db = $this->cfg['dbname'];
if (mysqli_connect_error()) { if (mysqli_connect_error()) {
$server = (DBG_USER) ? $this->cfg['dbhost'] : ''; $server = DBG_USER ? $this->cfg['dbhost'] : '';
header('HTTP/1.0 503 Service Unavailable'); header('HTTP/1.0 503 Service Unavailable');
bb_log(' ', "db_err/connect_failed_{$this->cfg['dbhost']}"); bb_log(' ', "db_err/connect_failed_{$this->cfg['dbhost']}");
die("Could not connect to mysql server $server"); die("Could not connect to mysql server $server");
@ -242,9 +242,9 @@ class SqlDb
} }
} }
return $result; return $result;
} else {
return false;
} }
return false;
} }
/** /**
@ -275,9 +275,9 @@ class SqlDb
if ($field_name) { if ($field_name) {
return isset($row[$field_name]) ? $row[$field_name] : false; return isset($row[$field_name]) ? $row[$field_name] : false;
} else {
return $row;
} }
return $row;
} }
/** /**
@ -571,9 +571,9 @@ class SqlDb
{ {
if ($this->link) { if ($this->link) {
return ['code' => mysqli_errno($this->link), 'message' => mysqli_error($this->link)]; return ['code' => mysqli_errno($this->link), 'message' => mysqli_error($this->link)];
} else {
return ['code' => '', 'message' => 'not connected'];
} }
return ['code' => '', 'message' => 'not connected'];
} }
/** /**
@ -783,7 +783,10 @@ class SqlDb
} }
} }
@define('IN_FIRST_SLOW_QUERY', true); if (!defined('IN_FIRST_SLOW_QUERY')) {
define('IN_FIRST_SLOW_QUERY', true);
}
CACHE('bb_cache')->set('dont_log_slow_query', $new_priority, $ignoring_time); CACHE('bb_cache')->set('dont_log_slow_query', $new_priority, $ignoring_time);
} }
@ -856,7 +859,7 @@ class SqlDb
$err = $this->sql_error(); $err = $this->sql_error();
$msg .= "\n" . trim(sprintf('#%06d %s', $err['code'], $err['message'])); $msg .= "\n" . trim(sprintf('#%06d %s', $err['code'], $err['message']));
} else { } else {
$msg .= " [" . $this->debug_find_source() . "]"; $msg .= ' [' . $this->debug_find_source() . ']';
} }
trigger_error($msg, E_USER_ERROR); trigger_error($msg, E_USER_ERROR);

View file

@ -239,7 +239,7 @@ class Template
{ {
$this->cur_tpl = $filename; $this->cur_tpl = $filename;
global $lang, $bb_cfg, $user, $tr_cfg; global $lang, $bb_cfg, $user;
$L =& $lang; $L =& $lang;
$V =& $this->vars; $V =& $this->vars;

View file

@ -128,15 +128,6 @@ $images['voting_graphic'][4] = $_main . 'voting_bar.gif';
$images['progress_bar'] = $_main . 'progress_bar.gif'; $images['progress_bar'] = $_main . 'progress_bar.gif';
$images['progress_bar_full'] = $_main . 'progress_bar_full.gif'; $images['progress_bar_full'] = $_main . 'progress_bar_full.gif';
// Vote graphic length defines the maximum length of a vote result graphic, ie. 100% = this length
$bb_cfg['vote_graphic_length'] = 205;
$bb_cfg['privmsg_graphic_length'] = 175;
$bb_cfg['topic_left_column_witdh'] = 150;
// Images auto-resize
$bb_cfg['post_img_width_decr'] = 52; // decrement for posted images width (px)
$bb_cfg['attach_img_width_decr'] = 130; // decrement for attach images width (px)
$template->assign_vars(array( $template->assign_vars(array(
'IMG' => $_main, 'IMG' => $_main,
'TEXT_BUTTONS' => $bb_cfg['text_buttons'], 'TEXT_BUTTONS' => $bb_cfg['text_buttons'],

View file

@ -238,7 +238,7 @@ $(function(){
/>&nbsp;{L_HIDE_CONTENTS} />&nbsp;{L_HIDE_CONTENTS}
</label> </label>
</p> </p>
<!-- IF $tr_cfg['gold_silver_enabled'] --><p class="chbox">{TOR_TYPE_CHBOX}</p><!-- ENDIF --> <!-- IF $bb_cfg['tracker']['gold_silver_enabled'] --><p class="chbox">{TOR_TYPE_CHBOX}</p><!-- ENDIF -->
</div> </div>
</fieldset> </fieldset>
<fieldset> <fieldset>

View file

@ -146,11 +146,11 @@
<tr class="row3"> <tr class="row3">
<th colspan="3" class="{postrow.attach.tor_reged.DL_LINK_CLASS}">{postrow.attach.tor_reged.DOWNLOAD_NAME}<!-- IF postrow.attach.tor_reged.TOR_FROZEN == 0 --><!-- IF MAGNET_LINKS -->&nbsp;{postrow.attach.tor_reged.MAGNET}<!-- ENDIF --><!-- ENDIF --></th> <th colspan="3" class="{postrow.attach.tor_reged.DL_LINK_CLASS}">{postrow.attach.tor_reged.DOWNLOAD_NAME}<!-- IF postrow.attach.tor_reged.TOR_FROZEN == 0 --><!-- IF MAGNET_LINKS -->&nbsp;{postrow.attach.tor_reged.MAGNET}<!-- ENDIF --><!-- ENDIF --></th>
</tr> </tr>
<!-- IF postrow.attach.tor_reged.TOR_SILVER_GOLD == 2 && $tr_cfg['gold_silver_enabled'] --> <!-- IF postrow.attach.tor_reged.TOR_SILVER_GOLD == 2 && $bb_cfg['tracker']['gold_silver_enabled'] -->
<tr class="row4"> <tr class="row4">
<th colspan="3" class="row7"><img src="styles/images/tor_silver.gif" width="16" height="15" title="{L_SILVER}" />&nbsp;{L_SILVER_STATUS}&nbsp;<img src="styles/images/tor_silver.gif" width="16" height="15" title="{L_SILVER}" /></th> <th colspan="3" class="row7"><img src="styles/images/tor_silver.gif" width="16" height="15" title="{L_SILVER}" />&nbsp;{L_SILVER_STATUS}&nbsp;<img src="styles/images/tor_silver.gif" width="16" height="15" title="{L_SILVER}" /></th>
</tr> </tr>
<!-- ELSEIF postrow.attach.tor_reged.TOR_SILVER_GOLD == 1 && $tr_cfg['gold_silver_enabled'] --> <!-- ELSEIF postrow.attach.tor_reged.TOR_SILVER_GOLD == 1 && $bb_cfg['tracker']['gold_silver_enabled'] -->
<tr class="row4"> <tr class="row4">
<th colspan="3" class="row7"><img src="styles/images/tor_gold.gif" width="16" height="15" title="{L_GOLD}" />&nbsp;{L_GOLD_STATUS}&nbsp;<img src="styles/images/tor_gold.gif" width="16" height="15" title="{L_GOLD}" /></th> <th colspan="3" class="row7"><img src="styles/images/tor_gold.gif" width="16" height="15" title="{L_GOLD}" />&nbsp;{L_GOLD_STATUS}&nbsp;<img src="styles/images/tor_gold.gif" width="16" height="15" title="{L_GOLD}" /></th>
</tr> </tr>
@ -252,7 +252,7 @@
<option value="del_torrent">{L_DELETE_TORRENT}</option> <option value="del_torrent">{L_DELETE_TORRENT}</option>
<option value="del_torrent_move_topic">{L_DELETE_MOVE_TORRENT}</option> <option value="del_torrent_move_topic">{L_DELETE_MOVE_TORRENT}</option>
<!-- IF AUTH_MOD --> <!-- IF AUTH_MOD -->
<!-- IF $tr_cfg['gold_silver_enabled'] --> <!-- IF $bb_cfg['tracker']['gold_silver_enabled'] -->
<!-- IF postrow.attach.tor_reged.TOR_SILVER_GOLD == 1 --> <!-- IF postrow.attach.tor_reged.TOR_SILVER_GOLD == 1 -->
<option value="unset_silver_gold">{L_UNSET_GOLD_TORRENT} / {L_UNSET_SILVER_TORRENT}</option> <option value="unset_silver_gold">{L_UNSET_GOLD_TORRENT} / {L_UNSET_SILVER_TORRENT}</option>
<option value="set_silver">{L_SET_SILVER_TORRENT}</option> <option value="set_silver">{L_SET_SILVER_TORRENT}</option>

View file

@ -30,6 +30,7 @@ require INC_DIR . '/bbcode.php';
$datastore->enqueue(array( $datastore->enqueue(array(
'ranks', 'ranks',
'cat_forums',
)); ));
$page_cfg['load_tpl_vars'] = array( $page_cfg['load_tpl_vars'] = array(