mirror of
https://github.com/torrentpier/torrentpier
synced 2025-08-22 22:33:55 -07:00
Merge 005058277c
into cb28304866
This commit is contained in:
commit
b619203e96
9 changed files with 803 additions and 520 deletions
52
common.php
52
common.php
|
@ -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);
|
||||||
|
|
|
@ -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
115
composer.lock
generated
|
@ -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",
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
// Increase number after changing js or css
|
$config = [
|
||||||
$bb_cfg['js_ver'] = $bb_cfg['css_ver'] = 1;
|
// Increase number after changing js or css
|
||||||
|
'js_ver' => 1,
|
||||||
|
'css_ver' => 1,
|
||||||
|
|
||||||
// Primary domain name
|
// Version info
|
||||||
$domain_name = 'torrentpier.me'; // enter here your primary domain name of your site
|
'tp_version' => '2.2.0',
|
||||||
$domain_name = (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : $domain_name;
|
'tp_release_date' => '**/02/2016',
|
||||||
|
'tp_release_state' => 'ALPHA',
|
||||||
|
|
||||||
// Version info
|
// Database
|
||||||
$bb_cfg['tp_version'] = '2.2.0';
|
'db' => [
|
||||||
$bb_cfg['tp_release_date'] = '**/02/2016';
|
'driver' => 'Pdo_Mysql',
|
||||||
$bb_cfg['tp_release_state'] = 'ALPHA';
|
'hostname' => '127.0.0.1',
|
||||||
|
'database' => 'tp_220',
|
||||||
|
'username' => 'user',
|
||||||
|
'password' => 'pass',
|
||||||
|
'charset' => 'utf8'
|
||||||
|
],
|
||||||
|
|
||||||
// Database
|
'sphinx' => [
|
||||||
$charset = 'utf8';
|
'driver' => 'Pdo_Mysql',
|
||||||
$pconnect = false;
|
'hostname' => '127.0.0.1',
|
||||||
|
'username' => 'user',
|
||||||
|
'password' => 'pass',
|
||||||
|
'port' => 9306,
|
||||||
|
'charset' => 'utf8'
|
||||||
|
],
|
||||||
|
|
||||||
// Настройка баз данных ['db']['srv_name'] => (array) srv_cfg;
|
// Aliases
|
||||||
// порядок параметров srv_cfg (хост, название базы, пользователь, пароль, charset, pconnect);
|
// @deprecated
|
||||||
$bb_cfg['db'] = array(
|
'db_alias' => [
|
||||||
'db1' => array('localhost', 'tp_220', 'user', 'pass', $charset, $pconnect),
|
|
||||||
//'db2' => array('localhost2', 'dbase2', 'user2', 'pass2', $charset, $pconnect),
|
|
||||||
//'db3' => array('localhost3', 'dbase3', 'user2', 'pass3', $charset, $pconnect),
|
|
||||||
);
|
|
||||||
|
|
||||||
$bb_cfg['db_alias'] = array(
|
|
||||||
// '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)
|
||||||
|
# name => array( (string) type, (array) cfg )
|
||||||
|
'bb_cache' => ['filecache', []],
|
||||||
|
'bb_config' => ['filecache', []],
|
||||||
|
'tr_cache' => ['filecache', []],
|
||||||
|
'session_cache' => ['filecache', []],
|
||||||
|
'bb_login_err' => ['filecache', []],
|
||||||
|
'bb_poll_data' => ['filecache', []],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
|
||||||
// Available cache types: memcache, sqlite, redis, apc, xcache (default of filecache)
|
// Datastore
|
||||||
# name => array( (string) type, (array) cfg )
|
// Available datastore types: memcache, sqlite, redis, apc, xcache (default filecache)
|
||||||
$bb_cfg['cache']['engines'] = array(
|
'datastore_type' => $domain_name,
|
||||||
'bb_cache' => array('filecache', array()),
|
|
||||||
'bb_config' => array('filecache', array()),
|
|
||||||
'tr_cache' => array('filecache', array()),
|
|
||||||
'session_cache' => array('filecache', array()),
|
|
||||||
'bb_login_err' => array('filecache', array()),
|
|
||||||
'bb_poll_data' => array('filecache', array()),
|
|
||||||
);
|
|
||||||
// Datastore
|
|
||||||
// Available datastore types: memcache, sqlite, redis, apc, xcache (default filecache)
|
|
||||||
$bb_cfg['datastore_type'] = 'filecache';
|
|
||||||
|
|
||||||
// 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
|
// GZip
|
||||||
if (isset($_SERVER['HTTP_CF_CONNECTING_IP']))
|
'gzip_compress' => true, // compress output
|
||||||
{
|
|
||||||
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// GZip
|
// Tracker
|
||||||
$bb_cfg['gzip_compress'] = true; // compress output
|
'announce_interval' => 2400, // Announce interval (default: 1800)
|
||||||
|
'passkey_key' => 'uk', // Passkey key name in GET request
|
||||||
|
'ignore_reported_ip' => false, // Ignore IP reported by client
|
||||||
|
'verify_reported_ip' => true, // Verify IP reported by client against $_SERVER['HTTP_X_FORWARDED_FOR']
|
||||||
|
'allow_internal_ip' => false, // Allow internal IP (10.xx.. etc.)
|
||||||
|
|
||||||
// Tracker
|
// Ocelot
|
||||||
$bb_cfg['announce_interval'] = 2400; // Announce interval (default: 1800)
|
'ocelot' => [
|
||||||
$bb_cfg['passkey_key'] = 'uk'; // Passkey key name in GET request
|
|
||||||
$bb_cfg['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']
|
|
||||||
$bb_cfg['allow_internal_ip'] = false; // Allow internal IP (10.xx.. etc.)
|
|
||||||
|
|
||||||
// Ocelot
|
|
||||||
$bb_cfg['ocelot'] = array(
|
|
||||||
'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;
|
// Don't change the order of ratios (from 0 to 1)
|
||||||
$bb_cfg['show_dl_status_in_forum'] = true;
|
// rating < 0.4 -- allow only 1 torrent for leeching
|
||||||
$bb_cfg['allow_dl_list_names_mode'] = true;
|
// rating < 0.5 -- only 2
|
||||||
|
// rating < 0.6 -- only 3
|
||||||
// Сколько дней сохранять торрент зарегистрированным / Days to keep torrent registered, if:
|
// rating > 0.6 -- depend on your tracker config limits (in "ACP - Tracker Config - Limits")
|
||||||
$bb_cfg['seeder_last_seen_days_keep'] = 0; // сколько дней назад был сид последний раз
|
'rating' => [
|
||||||
$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)
|
|
||||||
// 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.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
62
library/defines.php
Normal 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
40
src/Di.php
Normal 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");
|
||||||
|
}
|
||||||
|
}
|
26
src/ServiceProviders/ConfigServiceProvider.php
Normal file
26
src/ServiceProviders/ConfigServiceProvider.php
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
22
src/ServiceProviders/DbServiceProvider.php
Normal file
22
src/ServiceProviders/DbServiceProvider.php
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
41
src/ServiceProviders/SphinxServiceProvider.php
Normal file
41
src/ServiceProviders/SphinxServiceProvider.php
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue