This commit is contained in:
VasyOk 2016-02-04 03:18:58 +00:00
commit b619203e96
9 changed files with 803 additions and 520 deletions

View file

@ -15,12 +15,40 @@ if (!defined('BB_ROOT')) define('BB_ROOT', './');
header('X-Frame-Options: SAMEORIGIN'); header('X-Frame-Options: SAMEORIGIN');
// Get initial config // Cloudflare
require(BB_ROOT . 'library/config.php'); if (isset($_SERVER['HTTP_CF_CONNECTING_IP']))
{
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
require_once BB_ROOT . 'library/defines.php';
// Composer // Composer
require(BB_ROOT . 'vendor/autoload.php'); require(BB_ROOT . 'vendor/autoload.php');
require_once BB_ROOT . 'library/config.php';
$di = new \TorrentPier\Di();
$di->register(new \TorrentPier\ServiceProviders\ConfigServiceProvider, [
'config.file.system.main' => __DIR__ . '/library/config.php',
'config.file.local.main' => __DIR__ . '/library/config.local.php',
]);
$di->register(new \TorrentPier\ServiceProviders\DbServiceProvider, [
'config.db' => $di->config->db->toArray()
]);
$di->register(new \TorrentPier\ServiceProviders\SphinxServiceProvider, [
'config.sphinx' => $di->config->sphinx->toArray()
]);
$bb_cfg = $di->config->toArray();
$page_cfg = $di->config->page->toArray();
$tr_cfg = $di->config->tracker->toArray();
$rating_limits = $di->config->rating->toArray();
define('BB_CFG_LOADED', true);
// Load Zend Framework // Load Zend Framework
use Zend\Loader\StandardAutoloader; use Zend\Loader\StandardAutoloader;
$loader = new StandardAutoloader(array('autoregister_zf' => true)); $loader = new StandardAutoloader(array('autoregister_zf' => true));
@ -65,12 +93,28 @@ define('BOT_UID', -746);
/** /**
* Database * Database
* @deprecated
*/ */
// Core DB class // Core DB class
require(CORE_DIR . 'dbs.php'); require(CORE_DIR . 'dbs.php');
$DBS = new DBS($bb_cfg); $DBS = new DBS([
'db' => [
'db' => [
$di->config->db->hostname,
$di->config->db->database,
$di->config->db->username,
$di->config->db->password,
$di->config->db->charset,
false
]
],
'db_alias' => $bb_cfg['db_alias']
]);
function DB ($db_alias = 'db1') /**
* @deprecated
*/
function DB ($db_alias = 'db')
{ {
global $DBS; global $DBS;
return $DBS->get_db_obj($db_alias); return $DBS->get_db_obj($db_alias);

View file

@ -38,11 +38,13 @@
"zendframework/zend-loader": "^2.5", "zendframework/zend-loader": "^2.5",
"zendframework/zend-mail": "^2.5", "zendframework/zend-mail": "^2.5",
"zendframework/zend-session": "^2.5", "zendframework/zend-session": "^2.5",
"zendframework/zend-version": "^2.5" "zendframework/zend-version": "^2.5",
"pimple/pimple": "^3.0",
"ripaclub/sphinxsearch": "^0.8.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"TorrentPier\\": "library/" "TorrentPier\\": "src/"
} }
}, },
"minimum-stability": "stable", "minimum-stability": "stable",

115
composer.lock generated
View file

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "9a65af4ba5edfe73ffdded1ea1b995f7", "hash": "c254b55c3197ea827eb5e4a75b49e6a6",
"content-hash": "0074d54ee83fdffa1dec1fba0adc560d", "content-hash": "de4bc86e5ded359c5716096e4c795fc0",
"packages": [ "packages": [
{ {
"name": "container-interop/container-interop", "name": "container-interop/container-interop",
@ -79,6 +79,117 @@
], ],
"time": "2015-09-02 17:23:59" "time": "2015-09-02 17:23:59"
}, },
{
"name": "pimple/pimple",
"version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/silexphp/Pimple.git",
"reference": "a30f7d6e57565a2e1a316e1baf2a483f788b258a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/silexphp/Pimple/zipball/a30f7d6e57565a2e1a316e1baf2a483f788b258a",
"reference": "a30f7d6e57565a2e1a316e1baf2a483f788b258a",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
}
},
"autoload": {
"psr-0": {
"Pimple": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Pimple, a simple Dependency Injection Container",
"homepage": "http://pimple.sensiolabs.org",
"keywords": [
"container",
"dependency injection"
],
"time": "2015-09-11 15:10:35"
},
{
"name": "ripaclub/sphinxsearch",
"version": "0.8.0",
"source": {
"type": "git",
"url": "https://github.com/ripaclub/sphinxsearch.git",
"reference": "f9d7550b6250519785e4db15c32b23865f2d49f3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ripaclub/sphinxsearch/zipball/f9d7550b6250519785e4db15c32b23865f2d49f3",
"reference": "f9d7550b6250519785e4db15c32b23865f2d49f3",
"shasum": ""
},
"require": {
"php": ">=5.5",
"zendframework/zend-db": "~2.4",
"zendframework/zend-servicemanager": "~2.4",
"zendframework/zend-stdlib": "~2.4"
},
"require-dev": {
"phpunit/phpunit": "~4.3",
"satooshi/php-coveralls": "dev-master"
},
"suggest": {
"ripaclub/zf2-sphinxsearch": "ZF2 integration module for SphinxSearch library",
"ripaclub/zf2-sphinxsearch-tool": "Utility that provides a set of tools to create and handle Sphinx Search configs and sources"
},
"type": "library",
"autoload": {
"psr-4": {
"SphinxSearch\\": "library",
"SphinxSearchTest\\": "tests"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-2-Clause"
],
"authors": [
{
"name": "Leonardo Grasso",
"email": "me@leonardograsso.com",
"homepage": "http://github.com/leogr"
},
{
"name": "Leo Di Donato",
"email": "leodidonato@gmail.com",
"homepage": "http://github.com/leodido"
}
],
"description": "Sphinx Search library provides SphinxQL indexing and searching features",
"homepage": "https://github.com/ripaclub/sphinxsearch",
"keywords": [
"indexing",
"pdo",
"query builder",
"search",
"search engine",
"sphinx",
"sphinxql",
"zf2"
],
"time": "2015-06-22 18:12:29"
},
{ {
"name": "rych/bencode", "name": "rych/bencode",
"version": "v1.0.0", "version": "v1.0.0",

View file

@ -61,120 +61,437 @@
if (!defined('BB_ROOT')) die(basename(__FILE__)); if (!defined('BB_ROOT')) die(basename(__FILE__));
$bb_cfg = $tr_cfg = $page_cfg = array(); $domain_name = 'tor.dev';
$config = [
// Increase number after changing js or css // Increase number after changing js or css
$bb_cfg['js_ver'] = $bb_cfg['css_ver'] = 1; 'js_ver' => 1,
'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.2.0'; 'tp_version' => '2.2.0',
$bb_cfg['tp_release_date'] = '**/02/2016'; 'tp_release_date' => '**/02/2016',
$bb_cfg['tp_release_state'] = 'ALPHA'; 'tp_release_state' => 'ALPHA',
// Database // Database
$charset = 'utf8'; 'db' => [
$pconnect = false; 'driver' => 'Pdo_Mysql',
'hostname' => '127.0.0.1',
'database' => 'tp_220',
'username' => 'user',
'password' => 'pass',
'charset' => 'utf8'
],
// Настройка баз данных ['db']['srv_name'] => (array) srv_cfg; 'sphinx' => [
// порядок параметров srv_cfg (хост, название базы, пользователь, пароль, charset, pconnect); 'driver' => 'Pdo_Mysql',
$bb_cfg['db'] = array( 'hostname' => '127.0.0.1',
'db1' => array('localhost', 'tp_220', 'user', 'pass', $charset, $pconnect), 'username' => 'user',
//'db2' => array('localhost2', 'dbase2', 'user2', 'pass2', $charset, $pconnect), 'password' => 'pass',
//'db3' => array('localhost3', 'dbase3', 'user2', 'pass3', $charset, $pconnect), 'port' => 9306,
); 'charset' => 'utf8'
],
$bb_cfg['db_alias'] = array( // Aliases
// @deprecated
'db_alias' => [
// 'alias' => 'srv_name' // 'alias' => 'srv_name'
# db1 # db1
'log' => 'db1', // BB_LOG 'log' => 'db', // BB_LOG
'search' => 'db1', // BB_TOPIC_SEARCH 'search' => 'db', // BB_TOPIC_SEARCH
'sres' => 'db1', // BB_BT_USER_SETTINGS, BB_SEARCH_RESULTS 'sres' => 'db', // BB_BT_USER_SETTINGS, BB_SEARCH_RESULTS
'u_ses' => 'db1', // BB_USER_SES, BB_USER_LASTVISIT 'u_ses' => 'db', // BB_USER_SES, BB_USER_LASTVISIT
# db2 # db2
'dls' => 'db1', // BB_BT_DLS_* 'dls' => 'db', // BB_BT_DLS_*
'ip' => 'db1', // BB_POSTS_IP 'ip' => 'db', // BB_POSTS_IP
'ut' => 'db1', // BB_TOPICS_USER_POSTED 'ut' => 'db', // BB_TOPICS_USER_POSTED
# db3 # db3
'pm' => 'db1', // BB_PRIVMSGS, BB_PRIVMSGS_TEXT 'pm' => 'db', // BB_PRIVMSGS, BB_PRIVMSGS_TEXT
'pt' => 'db1', // BB_POSTS_TEXT 'pt' => 'db', // BB_POSTS_TEXT
); ],
// Cache // Cache
$bb_cfg['cache']['pconnect'] = true; '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,
); ],
'engines' => [
// 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 ) # name => array( (string) type, (array) cfg )
$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_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'; 'datastore_type' => $domain_name,
// Server // Server
$bb_cfg['server_name'] = $domain_name; // The domain name from which this board runs 'server_name' => $domain_name, // The domain name from which this board runs
$bb_cfg['server_port'] = (!empty($_SERVER['SERVER_PORT'])) ? $_SERVER['SERVER_PORT'] : 80; // The port your server is running on 'server_port' => (!empty($_SERVER['SERVER_PORT'])) ? $_SERVER['SERVER_PORT'] : 80, // The port your server is running on
$bb_cfg['script_path'] = '/'; // The path where FORUM is located relative to the domain name 'script_path' => '/', // The path where FORUM is located relative to the domain name
// Cloudflare
if (isset($_SERVER['HTTP_CF_CONNECTING_IP']))
{
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
// GZip // GZip
$bb_cfg['gzip_compress'] = true; // compress output 'gzip_compress' => true, // compress output
// Tracker // Tracker
$bb_cfg['announce_interval'] = 2400; // Announce interval (default: 1800) 'announce_interval' => 2400, // Announce interval (default: 1800)
$bb_cfg['passkey_key'] = 'uk'; // Passkey key name in GET request 'passkey_key' => 'uk', // Passkey key name in GET request
$bb_cfg['ignore_reported_ip'] = false; // Ignore IP reported by client 'ignore_reported_ip' => false, // Ignore IP reported by client
$bb_cfg['verify_reported_ip'] = true; // Verify IP reported by client against $_SERVER['HTTP_X_FORWARDED_FOR'] 'verify_reported_ip' => true, // Verify IP reported by client against $_SERVER['HTTP_X_FORWARDED_FOR']
$bb_cfg['allow_internal_ip'] = false; // Allow internal IP (10.xx.. etc.) 'allow_internal_ip' => false, // Allow internal IP (10.xx.. etc.)
// Ocelot // Ocelot
$bb_cfg['ocelot'] = array( 'ocelot' => [
'enabled' => false, 'enabled' => false,
'host' => $domain_name, 'host' => $domain_name,
'port' => 2710, 'port' => 2710,
'url' => "http://$domain_name:2710/", // with '/' 'url' => "http://$domain_name:2710/", // 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'; // Как скачивать? 'how_to_download_url_help' => 'viewtopic.php?t=1', // Как скачивать?
$bb_cfg['what_is_torrent_url_help'] = 'viewtopic.php?t=2'; // Что такое торрент? 'what_is_torrent_url_help' => 'viewtopic.php?t=2', // Что такое торрент?
$bb_cfg['ratio_url_help'] = 'viewtopic.php?t=3'; // Рейтинг и ограничения 'ratio_url_help' => 'viewtopic.php?t=3', // Рейтинг и ограничения
$bb_cfg['search_help_url'] = 'viewtopic.php?t=4'; // Помощь по поиску 'search_help_url' => 'viewtopic.php?t=4', // Помощь по поиску
// Torrents // Torrents
$bb_cfg['bt_min_ratio_allow_dl_tor'] = 0.3; // 0 - disable 'bt_min_ratio_allow_dl_tor' => 0.3, // 0 - disable
$bb_cfg['bt_min_ratio_warning'] = 0.6; // 0 - disable 'bt_min_ratio_warning' => 0.6, // 0 - disable
$tr_cfg = array( 'show_dl_status_in_search' => true,
'show_dl_status_in_forum' => true,
'allow_dl_list_names_mode' => true,
// Сколько дней сохранять торрент зарегистрированным / Days to keep torrent registered, if:
'seeder_last_seen_days_keep' => 0, // сколько дней назад был сид последний раз
'seeder_never_seen_days_keep' => 0, // сколько дней имеется статус "Сида не было никогда"
// DL-Status (days to keep user's dlstatus records)
'dl_will_days_keep' => 360,
'dl_down_days_keep' => 180,
'dl_complete_days_keep' => 180,
'dl_cancel_days_keep' => 30,
// Tor-Stats
'torstat_days_keep' => 60, // days to keep user's per-torrent stats
// Tor-Help
'torhelp_enabled' => false, // find dead torrents (without seeder) that user might help seeding
// URL's
'ajax_url' => 'ajax.php', # "http://{$_SERVER['SERVER_NAME']}/ajax.php"
'dl_url' => 'dl.php?t=', # "http://{$domain_name}/dl.php"
'login_url' => 'login.php', # "http://{$domain_name}/login.php"
'posting_url' => 'posting.php', # "http://{$domain_name}/posting.php"
'pm_url' => 'privmsg.php', # "http://{$domain_name}/privmsg.php"
// Language
'charset' => 'utf8', // page charset
'auto_language' => true, // select user-preferred language automatically
'lang' => [
'ru' => [
'name' => 'Русский',
'locale' => 'ru_RU.UTF-8',
'encoding' => 'UTF-8',
'captcha' => 'ru',
],
'uk' => [
'name' => 'Український',
'locale' => 'uk_UA.UTF-8',
'encoding' => 'UTF-8',
'captcha' => 'uk',
],
'en' => [
'name' => 'English',
'locale' => 'en_US.UTF-8',
'encoding' => 'UTF-8',
'captcha' => 'en',
],
],
// Templates
'templates' => [
#'folder' => 'Name',
'default' => 'Стандартный',
],
'tpl_name' => 'default',
'stylesheet' => 'main.css',
'show_sidebar1_on_every_page' => false,
'show_sidebar2_on_every_page' => false,
// Cookie
'cookie_domain' => in_array($domain_name, array(getenv('SERVER_ADDR'), 'localhost')) ? '' : ".$domain_name",
'cookie_secure' => (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') ? 1 : 0,
'cookie_prefix' => 'bb_', // 'bb_'
// Sessions
'session_update_intrv' => 180, // sec
'user_session_duration' => 1800, // sec
'admin_session_duration' => 6*3600, // sec
'user_session_gc_ttl' => 1800, // number of seconds that a staled session entry may remain in sessions table
'session_cache_gc_ttl' => 1200, // sec
'max_last_visit_days' => 14, // days
'last_visit_update_intrv' => 3600, // sec
// Registration
'invalid_logins' => 5, // Количество неверных попыток ввода пароля, перед выводом проверки капчей
'new_user_reg_disabled' => false, // Запретить регистрацию новых учетных записей
'unique_ip' => false, // Запретить регистрацию нескольких учетных записей с одного ip
'new_user_reg_restricted' => false, // Ограничить регистрацию новых пользователей по времени с 01:00 до 17:00
'reg_email_activation' => true, // Требовать активацию учетной записи по email
// Email
'emailer_disabled' => false,
'smtp_delivery' => false, // send email via a named server instead of the local mail function
'smtp_ssl' => false, // use ssl connect
'smtp_host' => '', // SMTP server host
'smtp_port' => 25, // SMTP server port
'smtp_username' => '', // enter a username if your SMTP server requires it
'smtp_password' => '', // enter a password if your SMTP server requires it
'smtp' => [
'name' => 'yandex.ru',
'host' => 'smtp.yandex.ru',
'port' => 465,
'connection_class' => 'login',
'connection_config' => [
'username' => '',
'password' => '',
'ssl' => 'ssl',
],
],
'board_email' => "noreply@$domain_name", // admin email address
'board_email_form' => false, // can users send email to each other via board
'board_email_sig' => '', // this text will be attached to all emails the board sends
'board_email_sitename' => $domain_name, // sitename used in all emails header
'topic_notify_enabled' => true,
'pm_notify_enabled' => true,
'group_send_email' => true,
'email_change_disabled' => false, // disable changing email by user
'tech_admin_email' => "admin@$domain_name", // email for sending error reports
'abuse_email' => "abuse@$domain_name",
'adv_email' => "adv@$domain_name",
// Special users
'dbg_users' => [
#user_id => 'name',
2 => 'admin',
],
'unlimited_users' => [
#user_id => 'name',
2 => 'admin',
],
'super_admins' => [
#user_id => 'name',
2 => 'admin',
],
// Date format
'date_format' => 'Y-m-d',
// Subforums
'sf_on_first_page_only' => true,
// Forums
'allowed_topics_per_page' => [50, 100, 150, 200, 250, 300],
// Topics
'show_quick_reply' => true,
'show_rank_text' => false,
'show_rank_image' => true,
'show_poster_joined' => true,
'show_poster_posts' => true,
'show_poster_from' => true,
'show_bot_nick' => false,
'text_buttons' => false, // replace EDIT, QUOTE... images with text links
'parse_ed2k_links' => true, // make ed2k links clickable
'post_date_format' => 'd-M-Y H:i',
'ext_link_new_win' => true, // open external links in new window
'topic_moved_days_keep' => 7, // remove topic moved links after xx days (or FALSE to disable)
'allowed_posts_per_page' => [15, 30, 50, 100],
'user_signature_start' => '<div class="signature"><br />_________________<br />',
'user_signature_end' => '</div>', // Это позволит использовать html теги, которые требуют закрытия. Например <table> или <font color>
// Posts
'use_posts_cache' => true, // if you switch from ON to OFF, you need to TRUNCATE `bb_posts_html` table
'posts_cache_days_keep' => 14,
'max_post_length' => 120000, // bytes
'use_ajax_posts' => true,
// Search
'sphinx_enabled' => false, // if false mysql by default
'sphinx_topic_titles_host' => '127.0.0.1',
'sphinx_topic_titles_port' => 3312,
'sphinx_config_path' => realpath("../install/sphinx/sphinx.conf"),
'disable_ft_search_in_posts' => false, // disable searching in post bodies
'disable_search_for_guest' => true,
'allow_search_in_bool_mode' => true,
'max_search_words_per_post' => 200,
'search_min_word_len' => 3,
'search_max_word_len' => 35,
'limit_max_search_results' => false,
'spam_filter_file_path' => '', // BB_PATH .'/misc/spam_filter_words.txt';
'autocorrect_wkl' => true, // autocorrect wrong keyboard layout
// Posting
'prevent_multiposting' => true, // replace "reply" with "edit last msg" if user (not admin or mod) is last topic poster
'max_smilies' => 10, // Максимальное число смайлов в посте (0 - без ограничения)
// PM
'privmsg_disable' => false, // отключить систему личных сообщений на форуме
'max_outgoing_pm_cnt' => 10, // ограничение на кол. одновременных исходящих лс (для замедления рассылки спама)
'max_inbox_privmsgs' => 200, // максимальное число сообщений в папке входящие
'max_savebox_privmsgs' => 25, // максимальное число сообщений в папке сохраненные
'max_sentbox_privmsgs' => 50, // максимальное число сообщений в папке отправленные
'pm_days_keep' => 180, // время хранения ЛС
// Actions log
'log_days_keep' => 90,
// Users
'color_nick' => true, // Окраска ников пользователей по user_rank
'user_not_activated_days_keep' => 7, // "not activated" == "not finished registration"
'user_not_active_days_keep' => 180, // inactive users but only with no posts
// Groups
'group_members_per_page' => 50,
// Tidy
'tidy_post' => (!in_array('tidy', get_loaded_extensions())) ? false : true,
'mem_on_start' => (MEM_USAGE) ? memory_get_usage() : 0,
'translate_dates' => true, // in displaying time
'use_word_censor' => true,
'last_visit_date_format' => 'd-M H:i',
'last_post_date_format' => 'd-M-y H:i',
'poll_max_days' => 180, // сколько дней с момента создания темы опрос будет активным
'allow_change' => [
'language' => true,
'dateformat' => true,
],
'trash_forum_id' => 0, // (int) 7
'first_logon_redirect_url' => 'index.php',
'terms_and_conditions_url' => 'terms.php',
'tor_help_links' => 'terms.php',
'user_agreement_url' => 'info.php?show=user_agreement',
'copyright_holders_url' => 'info.php?show=copyright_holders',
'advert_url' => 'info.php?show=advert',
// Extensions
'file_id_ext' => [
1 => 'gif',
2 => 'gz',
3 => 'jpg',
4 => 'png',
5 => 'rar',
6 => 'tar',
7 => 'tiff',
8 => 'torrent',
9 => 'zip',
],
// Attachments
'attach' => [
'upload_path' => DATA_DIR . 'torrent_files', // путь к директории с torrent файлами
'max_size' => 5*1024*1024, // максимальный размер файла в байтах
],
'tor_forums_allowed_ext' => ['torrent', 'zip', 'rar'], // для разделов с раздачами
'gen_forums_allowed_ext' => ['torrent', 'zip', 'rar'], // для обычных разделов
// Avatars
'avatars' => [
'allowed_ext' => ['gif','jpg','jpeg','png'], // разрешенные форматы файлов
'bot_avatar' => 'gallery/bot.gif', // аватара бота
'max_size' => 100*1024, // размер аватары в байтах
'max_height' => 100, // высота аватара в px
'max_width' => 100, // ширина аватара в px
'no_avatar' => 'gallery/noavatar.png', // дефолтная аватара
'upload_path' => BB_ROOT . 'data/avatars/', // путь к директории с аватарами
'up_allowed' => true, // разрешить загрузку аватар
],
// Group avatars
'group_avatars' => [
'allowed_ext' => ['gif','jpg','jpeg','png'], // разрешенные форматы файлов
'max_size' => 300*1024, // размер аватары в байтах
'max_height' => 300, // высота аватара в px
'max_width' => 300, // ширина аватара в px
'no_avatar' => 'gallery/noavatar.png', // дефолтная аватара
'upload_path' => BB_ROOT . 'data/avatars/', // путь к директории с аватарами
'up_allowed' => true, // разрешить загрузку аватар
],
// Captcha
// Get a Google reCAPTCHA API Key: https://www.google.com/recaptcha/admin
'captcha' => [
'disabled' => false,
'public_key' => '', // your public key
'secret_key' => '', // your secret key
'theme' => 'light', // light or dark
],
// Atom feed
'atom' => [
'path' => INT_DATA_DIR .'atom', // without ending slash
'url' => './internal_data/atom', // without ending slash
],
// Nofollow
'nofollow' => [
'disabled' => false,
'allowed_url' => [$domain_name], // 'allowed.site', 'www.allowed.site'
],
// Page settings
'page' => [
'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
'tracker' => [
'autoclean' => true, 'autoclean' => true,
'off' => false, 'off' => false,
'off_reason' => 'temporarily disabled', 'off_reason' => 'temporarily disabled',
@ -196,426 +513,44 @@ $tr_cfg = array(
'retracker' => true, 'retracker' => true,
'retracker_host' => 'http://retracker.local/announce', 'retracker_host' => 'http://retracker.local/announce',
'freeleech' => false, 'freeleech' => false,
); ],
$bb_cfg['show_dl_status_in_search'] = true;
$bb_cfg['show_dl_status_in_forum'] = true;
$bb_cfg['allow_dl_list_names_mode'] = true;
// Сколько дней сохранять торрент зарегистрированным / Days to keep torrent registered, if:
$bb_cfg['seeder_last_seen_days_keep'] = 0; // сколько дней назад был сид последний раз
$bb_cfg['seeder_never_seen_days_keep'] = 0; // сколько дней имеется статус "Сида не было никогда"
// Ratio limits
define('TR_RATING_LIMITS', true); // ON/OFF
define('MIN_DL_FOR_RATIO', 10737418240); // 10 GB in bytes, 0 - disable
// Don't change the order of ratios (from 0 to 1) // Don't change the order of ratios (from 0 to 1)
// rating < 0.4 -- allow only 1 torrent for leeching // rating < 0.4 -- allow only 1 torrent for leeching
// rating < 0.5 -- only 2 // rating < 0.5 -- only 2
// rating < 0.6 -- only 3 // rating < 0.6 -- only 3
// rating > 0.6 -- depend on your tracker config limits (in "ACP - Tracker Config - Limits") // rating > 0.6 -- depend on your tracker config limits (in "ACP - Tracker Config - Limits")
$rating_limits = array( 'rating' => [
'0.4' => 1, '0.4' => 1,
'0.5' => 2, '0.5' => 2,
'0.6' => 3, '0.6' => 3,
); ]
];
// DL-Status (days to keep user's dlstatus records) if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && $config['auto_language'])
$bb_cfg['dl_will_days_keep'] = 360;
$bb_cfg['dl_down_days_keep'] = 180;
$bb_cfg['dl_complete_days_keep'] = 180;
$bb_cfg['dl_cancel_days_keep'] = 30;
// Tor-Stats
$bb_cfg['torstat_days_keep'] = 60; // days to keep user's per-torrent stats
// Tor-Help
$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,
);
// Path (trailing slash '/' at the end: XX_PATH - without, XX_DIR - with)
define('BB_PATH', realpath(BB_ROOT) );
define('ADMIN_DIR', BB_PATH .'/admin/' );
define('DATA_DIR', BB_PATH .'/data/' );
define('INT_DATA_DIR', BB_PATH .'/internal_data/' );
define('AJAX_HTML_DIR', BB_ROOT .'/internal_data/ajax_html/' );
define('CACHE_DIR', BB_PATH .'/internal_data/cache/' );
define('LOG_DIR', BB_PATH .'/internal_data/log/' );
define('SITEMAP_DIR', BB_PATH .'/internal_data/sitemap/' );
define('TRIGGERS_DIR', BB_PATH .'/internal_data/triggers/' );
define('AJAX_DIR', BB_ROOT .'/library/ajax/' );
define('CFG_DIR', BB_PATH .'/library/config/' );
define('INC_DIR', BB_PATH .'/library/includes/' );
define('CLASS_DIR', BB_PATH .'/library/includes/classes/');
define('CORE_DIR', BB_PATH .'/library/includes/core/' );
define('UCP_DIR', BB_PATH .'/library/includes/ucp/' );
define('LANG_ROOT_DIR', BB_PATH .'/library/language/' );
define('IMAGES_DIR', BB_PATH .'/styles/images/' );
define('TEMPLATES_DIR', BB_PATH .'/styles/templates/' );
// URL's
$bb_cfg['ajax_url'] = 'ajax.php'; # "http://{$_SERVER['SERVER_NAME']}/ajax.php"
$bb_cfg['dl_url'] = 'dl.php?t='; # "http://{$domain_name}/dl.php"
$bb_cfg['login_url'] = 'login.php'; # "http://{$domain_name}/login.php"
$bb_cfg['posting_url'] = 'posting.php'; # "http://{$domain_name}/posting.php"
$bb_cfg['pm_url'] = 'privmsg.php'; # "http://{$domain_name}/privmsg.php"
// Language
$bb_cfg['charset'] = 'utf8'; // page charset
$bb_cfg['auto_language'] = true; // select user-preferred language automatically
if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && $bb_cfg['auto_language'])
{ {
$user_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); $user_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (file_exists(LANG_ROOT_DIR . $user_lang .'/')) if (file_exists(LANG_ROOT_DIR . $user_lang .'/'))
{ {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR . $user_lang .'/'; $config['default_lang_dir'] = LANG_ROOT_DIR . $user_lang .'/';
$bb_cfg['default_lang'] = $user_lang; $config['default_lang'] = $user_lang;
} }
else else
{ {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR .'en/'; $config['default_lang_dir'] = LANG_ROOT_DIR .'en/';
$bb_cfg['default_lang'] = 'en'; $config['default_lang'] = 'en';
} }
} }
else else
{ {
if (isset($bb_cfg['default_lang']) && file_exists(LANG_ROOT_DIR . $bb_cfg['default_lang'] .'/')) if (isset($config['default_lang']) && file_exists(LANG_ROOT_DIR . $config['default_lang'] .'/'))
{ {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR . $bb_cfg['default_lang'] .'/'; $config['default_lang_dir'] = LANG_ROOT_DIR . $config['default_lang'] .'/';
} }
else else
{ {
$bb_cfg['default_lang_dir'] = LANG_ROOT_DIR .'en/'; $config['default_lang_dir'] = LANG_ROOT_DIR .'en/';
} }
} }
$bb_cfg['lang'] = array( return $config;
'ru' => array(
'name' => 'Русский',
'locale' => 'ru_RU.UTF-8',
'encoding' => 'UTF-8',
'captcha' => 'ru',
),
'uk' => array(
'name' => 'Український',
'locale' => 'uk_UA.UTF-8',
'encoding' => 'UTF-8',
'captcha' => 'uk',
),
'en' => array(
'name' => 'English',
'locale' => 'en_US.UTF-8',
'encoding' => 'UTF-8',
'captcha' => 'en',
),
);
// Templates
define('ADMIN_TPL_DIR', TEMPLATES_DIR .'/admin/');
$bb_cfg['templates'] = array(
// 'folder' => 'Name',
'default' => 'Стандартный',
);
$bb_cfg['tpl_name'] = 'default';
$bb_cfg['stylesheet'] = 'main.css';
$bb_cfg['show_sidebar1_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
$bb_cfg['cookie_domain'] = in_array($domain_name, array(getenv('SERVER_ADDR'), 'localhost')) ? '' : ".$domain_name";
$bb_cfg['cookie_secure'] = (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') ? 1 : 0;
$bb_cfg['cookie_prefix'] = 'bb_'; // 'bb_'
// Sessions
$bb_cfg['session_update_intrv'] = 180; // sec
$bb_cfg['user_session_duration'] = 1800; // sec
$bb_cfg['admin_session_duration'] = 6*3600; // sec
$bb_cfg['user_session_gc_ttl'] = 1800; // number of seconds that a staled session entry may remain in sessions table
$bb_cfg['session_cache_gc_ttl'] = 1200; // sec
$bb_cfg['max_last_visit_days'] = 14; // days
$bb_cfg['last_visit_update_intrv'] = 3600; // sec
// Registration
$bb_cfg['invalid_logins'] = 5; // Количество неверных попыток ввода пароля, перед выводом проверки капчей
$bb_cfg['new_user_reg_disabled'] = false; // Запретить регистрацию новых учетных записей
$bb_cfg['unique_ip'] = false; // Запретить регистрацию нескольких учетных записей с одного ip
$bb_cfg['new_user_reg_restricted'] = false; // Ограничить регистрацию новых пользователей по времени с 01:00 до 17:00
$bb_cfg['reg_email_activation'] = true; // Требовать активацию учетной записи по email
// Email
$bb_cfg['emailer_disabled'] = false;
$bb_cfg['smtp_delivery'] = false; // send email via a named server instead of the local mail function
$bb_cfg['smtp_ssl'] = false; // use ssl connect
$bb_cfg['smtp_host'] = ''; // SMTP server host
$bb_cfg['smtp_port'] = 25; // SMTP server port
$bb_cfg['smtp_username'] = ''; // enter a username if your SMTP server requires it
$bb_cfg['smtp_password'] = ''; // enter a password if your SMTP server requires it
$bb_cfg['smtp'] = array(
'name' => 'yandex.ru',
'host' => 'smtp.yandex.ru',
'port' => 465,
'connection_class' => 'login',
'connection_config' => array(
'username' => '',
'password' => '',
'ssl' => 'ssl',
),
);
$bb_cfg['board_email'] = "noreply@$domain_name"; // admin email address
$bb_cfg['board_email_form'] = false; // can users send email to each other via board
$bb_cfg['board_email_sig'] = ''; // this text will be attached to all emails the board sends
$bb_cfg['board_email_sitename'] = $domain_name; // sitename used in all emails header
$bb_cfg['topic_notify_enabled'] = true;
$bb_cfg['pm_notify_enabled'] = true;
$bb_cfg['group_send_email'] = true;
$bb_cfg['email_change_disabled'] = false; // disable changing email by user
$bb_cfg['tech_admin_email'] = "admin@$domain_name"; // email for sending error reports
$bb_cfg['abuse_email'] = "abuse@$domain_name";
$bb_cfg['adv_email'] = "adv@$domain_name";
// Debug
define('DBG_LOG', false); // enable forum debug (off on production)
define('DBG_TRACKER', false); // enable tracker debug (off on production)
define('COOKIE_DBG', 'bb_dbg'); // debug cookie name
define('SQL_DEBUG', true); // enable forum sql & cache debug
define('SQL_LOG_ERRORS', true); // all SQL_xxx options enabled only if SQL_DEBUG == TRUE
define('SQL_CALC_QUERY_TIME', true); // for stats
define('SQL_LOG_SLOW_QUERIES', true); // log sql slow queries
define('SQL_SLOW_QUERY_TIME', 10); // slow query in seconds
define('SQL_PREPEND_SRC_COMM', false); // prepend source file comment to sql query
// Special users
$bb_cfg['dbg_users'] = array(
# user_id => 'name',
2 => 'admin',
);
$bb_cfg['unlimited_users'] = array(
# user_id => 'name',
2 => 'admin',
);
$bb_cfg['super_admins'] = array(
# user_id => 'name',
2 => 'admin',
);
// Log options
define('LOG_EXT', 'log');
define('LOG_SEPR', ' | ');
define('LOG_LF', "\n");
define('LOG_MAX_SIZE', 1048576); // bytes
// Error reporting
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', LOG_DIR .'php_err.log');
// Triggers
define('BB_ENABLED', TRIGGERS_DIR .'$on');
define('BB_DISABLED', TRIGGERS_DIR .'$off');
define('CRON_ALLOWED', TRIGGERS_DIR .'cron_allowed');
define('CRON_RUNNING', TRIGGERS_DIR .'cron_running');
// Date format
$bb_cfg['date_format'] = 'Y-m-d';
// Subforums
$bb_cfg['sf_on_first_page_only'] = true;
// Forums
$bb_cfg['allowed_topics_per_page'] = array(50, 100, 150, 200, 250, 300);
// Topics
$bb_cfg['show_quick_reply'] = true;
$bb_cfg['show_rank_text'] = false;
$bb_cfg['show_rank_image'] = true;
$bb_cfg['show_poster_joined'] = true;
$bb_cfg['show_poster_posts'] = true;
$bb_cfg['show_poster_from'] = true;
$bb_cfg['show_bot_nick'] = false;
$bb_cfg['text_buttons'] = false; // replace EDIT, QUOTE... images with text links
$bb_cfg['parse_ed2k_links'] = true; // make ed2k links clickable
$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['topic_moved_days_keep'] = 7; // remove topic moved links after xx days (or FALSE to disable)
$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_end'] = '</div>'; // Это позволит использовать html теги, которые требуют закрытия. Например <table> или <font color>
// Posts
$bb_cfg['use_posts_cache'] = true; // if you switch from ON to OFF, you need to TRUNCATE `bb_posts_html` table
$bb_cfg['posts_cache_days_keep'] = 14;
$bb_cfg['max_post_length'] = 120000; // bytes
$bb_cfg['use_ajax_posts'] = true;
// Search
$bb_cfg['sphinx_enabled'] = false; // if false mysql by default
$bb_cfg['sphinx_topic_titles_host'] = '127.0.0.1';
$bb_cfg['sphinx_topic_titles_port'] = 3312;
$bb_cfg['sphinx_config_path'] = realpath("../install/sphinx/sphinx.conf");
$bb_cfg['disable_ft_search_in_posts'] = false; // disable searching in post bodies
$bb_cfg['disable_search_for_guest'] = true;
$bb_cfg['allow_search_in_bool_mode'] = true;
$bb_cfg['max_search_words_per_post'] = 200;
$bb_cfg['search_min_word_len'] = 3;
$bb_cfg['search_max_word_len'] = 35;
$bb_cfg['limit_max_search_results'] = false;
$bb_cfg['spam_filter_file_path'] = ''; // BB_PATH .'/misc/spam_filter_words.txt';
$bb_cfg['autocorrect_wkl'] = true; // autocorrect wrong keyboard layout
// Posting
$bb_cfg['prevent_multiposting'] = true; // replace "reply" with "edit last msg" if user (not admin or mod) is last topic poster
$bb_cfg['max_smilies'] = 10; // Максимальное число смайлов в посте (0 - без ограничения)
// PM
$bb_cfg['privmsg_disable'] = false; // отключить систему личных сообщений на форуме
$bb_cfg['max_outgoing_pm_cnt'] = 10; // ограничение на кол. одновременных исходящих лс (для замедления рассылки спама)
$bb_cfg['max_inbox_privmsgs'] = 200; // максимальное число сообщений в папке входящие
$bb_cfg['max_savebox_privmsgs'] = 25; // максимальное число сообщений в папке сохраненные
$bb_cfg['max_sentbox_privmsgs'] = 50; // максимальное число сообщений в папке отправленные
$bb_cfg['pm_days_keep'] = 180; // время хранения ЛС
// Actions log
$bb_cfg['log_days_keep'] = 90;
// Users
$bb_cfg['color_nick'] = true; // Окраска ников пользователей по user_rank
$bb_cfg['user_not_activated_days_keep'] = 7; // "not activated" == "not finished registration"
$bb_cfg['user_not_active_days_keep'] = 180; // inactive users but only with no posts
// Groups
$bb_cfg['group_members_per_page'] = 50;
// Tidy
$bb_cfg['tidy_post'] = (!in_array('tidy', get_loaded_extensions())) ? false : true;
// Misc
define('MEM_USAGE', function_exists('memory_get_usage'));
$bb_cfg['mem_on_start'] = (MEM_USAGE) ? memory_get_usage() : 0;
$bb_cfg['translate_dates'] = true; // in displaying time
$bb_cfg['use_word_censor'] = true;
$bb_cfg['last_visit_date_format'] = 'd-M H:i';
$bb_cfg['last_post_date_format'] = 'd-M-y H:i';
$bb_cfg['poll_max_days'] = 180; // сколько дней с момента создания темы опрос будет активным
$bb_cfg['allow_change'] = array(
'language' => true,
'dateformat' => true,
);
define('GZIP_OUTPUT_ALLOWED', (extension_loaded('zlib') && !ini_get('zlib.output_compression')));
$bb_cfg['trash_forum_id'] = 0; // (int) 7
$bb_cfg['first_logon_redirect_url'] = 'index.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['copyright_holders_url'] = 'info.php?show=copyright_holders';
$bb_cfg['advert_url'] = 'info.php?show=advert';
// Extensions
$bb_cfg['file_id_ext'] = array(
1 => 'gif',
2 => 'gz',
3 => 'jpg',
4 => 'png',
5 => 'rar',
6 => 'tar',
7 => 'tiff',
8 => 'torrent',
9 => 'zip',
);
// Attachments
$bb_cfg['attach'] = array(
'upload_path' => DATA_DIR . 'torrent_files', // путь к директории с torrent файлами
'max_size' => 5*1024*1024, // максимальный размер файла в байтах
);
$bb_cfg['tor_forums_allowed_ext'] = ['torrent', 'zip', 'rar']; // для разделов с раздачами
$bb_cfg['gen_forums_allowed_ext'] = ['torrent', 'zip', 'rar']; // для обычных разделов
// Avatars
$bb_cfg['avatars'] = array(
'allowed_ext' => array('gif','jpg','jpeg','png'), // разрешенные форматы файлов
'bot_avatar' => 'gallery/bot.gif', // аватара бота
'max_size' => 100*1024, // размер аватары в байтах
'max_height' => 100, // высота аватара в px
'max_width' => 100, // ширина аватара в px
'no_avatar' => 'gallery/noavatar.png', // дефолтная аватара
'upload_path' => BB_ROOT . 'data/avatars/', // путь к директории с аватарами
'up_allowed' => true, // разрешить загрузку аватар
);
// Group avatars
$bb_cfg['group_avatars'] = array(
'allowed_ext' => array('gif','jpg','jpeg','png'), // разрешенные форматы файлов
'max_size' => 300*1024, // размер аватары в байтах
'max_height' => 300, // высота аватара в px
'max_width' => 300, // ширина аватара в px
'no_avatar' => 'gallery/noavatar.png', // дефолтная аватара
'upload_path' => BB_ROOT . 'data/avatars/', // путь к директории с аватарами
'up_allowed' => true, // разрешить загрузку аватар
);
// Captcha
// Get a Google reCAPTCHA API Key: https://www.google.com/recaptcha/admin
$bb_cfg['captcha'] = array(
'disabled' => false,
'public_key' => '', // your public key
'secret_key' => '', // your secret key
'theme' => 'light', // light or dark
);
// Atom feed
$bb_cfg['atom'] = array(
'path' => INT_DATA_DIR .'atom', // without ending slash
'url' => './internal_data/atom', // without ending slash
);
// Nofollow
$bb_cfg['nofollow'] = array(
'disabled' => false,
'allowed_url' => array($domain_name), // 'allowed.site', 'www.allowed.site'
);
// Local config
if (file_exists(BB_ROOT. '/library/config.local.php'))
{
include_once(BB_ROOT. '/library/config.local.php');
}
define('BB_CFG_LOADED', true);

62
library/defines.php Normal file
View file

@ -0,0 +1,62 @@
<?php
// Ratio limits
define('TR_RATING_LIMITS', true); // ON/OFF
define('MIN_DL_FOR_RATIO', 10737418240); // 10 GB in bytes, 0 - disable
// Path (trailing slash '/' at the end: XX_PATH - without, XX_DIR - with)
define('BB_PATH', realpath(BB_ROOT) );
define('ADMIN_DIR', BB_PATH .'/admin/' );
define('DATA_DIR', BB_PATH .'/data/' );
define('INT_DATA_DIR', BB_PATH .'/internal_data/' );
define('AJAX_HTML_DIR', BB_ROOT .'/internal_data/ajax_html/' );
define('CACHE_DIR', BB_PATH .'/internal_data/cache/' );
define('LOG_DIR', BB_PATH .'/internal_data/log/' );
define('SITEMAP_DIR', BB_PATH .'/internal_data/sitemap/' );
define('TRIGGERS_DIR', BB_PATH .'/internal_data/triggers/' );
define('AJAX_DIR', BB_ROOT .'/library/ajax/' );
define('CFG_DIR', BB_PATH .'/library/config/' );
define('INC_DIR', BB_PATH .'/library/includes/' );
define('CLASS_DIR', BB_PATH .'/library/includes/classes/');
define('CORE_DIR', BB_PATH .'/library/includes/core/' );
define('UCP_DIR', BB_PATH .'/library/includes/ucp/' );
define('LANG_ROOT_DIR', BB_PATH .'/library/language/' );
define('IMAGES_DIR', BB_PATH .'/styles/images/' );
define('TEMPLATES_DIR', BB_PATH .'/styles/templates/' );
// Templates
define('ADMIN_TPL_DIR', TEMPLATES_DIR .'/admin/');
// Debug
define('DBG_LOG', false); // enable forum debug (off on production)
define('DBG_TRACKER', false); // enable tracker debug (off on production)
define('COOKIE_DBG', 'bb_dbg'); // debug cookie name
define('SQL_DEBUG', true); // enable forum sql & cache debug
define('SQL_LOG_ERRORS', true); // all SQL_xxx options enabled only if SQL_DEBUG == TRUE
define('SQL_CALC_QUERY_TIME', true); // for stats
define('SQL_LOG_SLOW_QUERIES', true); // log sql slow queries
define('SQL_SLOW_QUERY_TIME', 10); // slow query in seconds
define('SQL_PREPEND_SRC_COMM', false); // prepend source file comment to sql query
// Log options
define('LOG_EXT', 'log');
define('LOG_SEPR', ' | ');
define('LOG_LF', "\n");
define('LOG_MAX_SIZE', 1048576); // bytes
// Error reporting
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', LOG_DIR .'php_err.log');
// Triggers
define('BB_ENABLED', TRIGGERS_DIR .'$on');
define('BB_DISABLED', TRIGGERS_DIR .'$off');
define('CRON_ALLOWED', TRIGGERS_DIR .'cron_allowed');
define('CRON_RUNNING', TRIGGERS_DIR .'cron_running');
// Misc
define('MEM_USAGE', function_exists('memory_get_usage'));
define('GZIP_OUTPUT_ALLOWED', (extension_loaded('zlib') && !ini_get('zlib.output_compression')));

40
src/Di.php Normal file
View file

@ -0,0 +1,40 @@
<?php
namespace TorrentPier;
use Pimple\Container;
/**
* Class Di
* Dependency Injection Container
*
* @package TorrentPier
*/
class Di extends Container
{
private static $instance;
public function __construct(array $values = [])
{
parent::__construct($values);
static::$instance = $this;
}
public static function getInstance()
{
if (static::$instance instanceof Container) {
return static::$instance;
}
throw new \Exception('The container has not been initialized');
}
public function __get($id)
{
if ($this->offsetExists($id)) {
return $this->offsetGet($id);
}
throw new \Exception("Service '{$id}' is not registered in the container");
}
}

View file

@ -0,0 +1,26 @@
<?php
namespace TorrentPier\ServiceProviders;
use Pimple\Container;
use Pimple\ServiceProviderInterface;
use Zend\Config\Factory;
class ConfigServiceProvider implements ServiceProviderInterface
{
/**
* @inheritdoc
*/
public function register(Container $container)
{
$container['config'] = function($container) {
$config = Factory::fromFile($container['config.file.system.main'], true);
if (isset($container['config.file.local.main']) && file_exists($container['config.file.local.main'])) {
$config->merge(Factory::fromFile($container['config.file.local.main'], true));
}
return $config;
};
}
}

View file

@ -0,0 +1,22 @@
<?php
namespace TorrentPier\ServiceProviders;
use Pimple\Container;
use Pimple\ServiceProviderInterface;
use Zend\Db\Adapter\Adapter;
class DbServiceProvider implements ServiceProviderInterface
{
/**
* @inheritdoc
*/
public function register(Container $container)
{
$container['db'] = function($container) {
$adapter = new Adapter($container['config.db']);
unset($container['config.db']);
return $adapter;
};
}
}

View file

@ -0,0 +1,41 @@
<?php
namespace TorrentPier\ServiceProviders;
use Pimple\Container;
use Pimple\ServiceProviderInterface;
use SphinxSearch\Db\Adapter\Driver\Pdo\Statement;
use SphinxSearch\Db\Adapter\Exception\UnsupportedDriverException;
use SphinxSearch\Db\Adapter\Platform\SphinxQL;
use Zend\Db\Adapter\Adapter;
use Zend\Db\Adapter\Driver\Mysqli\Mysqli;
use Zend\Db\Adapter\Driver\Pdo\Pdo;
class SphinxServiceProvider implements ServiceProviderInterface
{
/**
* @inheritdoc
*/
public function register(Container $container)
{
$container['sphinx'] = function($container) {
$platform = new SphinxQL();
$adapter = new Adapter($container['config.sphinx']);
$driver = $adapter->getDriver();
// Check driver
if ($driver instanceof Pdo && $driver->getDatabasePlatformName(Pdo::NAME_FORMAT_CAMELCASE) == 'Mysql' ) {
$driver->registerStatementPrototype(new Statement());
} elseif (!$driver instanceof Mysqli) {
$class = get_class($driver);
throw new UnsupportedDriverException(
$class . ' not supported. Use Zend\Db\Adapter\Driver\Pdo\Pdo or Zend\Db\Adapter\Driver\Mysqli\Mysqli'
);
}
$platform->setDriver($adapter->getDriver());
unset($container['config.sphinx']);
return $adapter;
};
}
}