mirror of
https://github.com/torrentpier/torrentpier
synced 2025-08-23 06:35:45 -07:00
Merge pull request #114 from Exile37/leroy0_develop
New compatible with php7 classes: Db, Config
This commit is contained in:
commit
10984fc840
43 changed files with 869 additions and 1058 deletions
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2005-2016 TorrentPier
|
Copyright (c) 2005-2017 TorrentPier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -33,6 +33,7 @@ $di = new Di();
|
||||||
$di->register(new ServiceProviders\ConfigServiceProvider, [
|
$di->register(new ServiceProviders\ConfigServiceProvider, [
|
||||||
'file.system.main' => __DIR__ . '/configs/main.php',
|
'file.system.main' => __DIR__ . '/configs/main.php',
|
||||||
'file.local.main' => __DIR__ . '/configs/local.php',
|
'file.local.main' => __DIR__ . '/configs/local.php',
|
||||||
|
'config.dbQuery' => "SELECT config_name, config_value FROM bb_config"
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//// Application
|
//// Application
|
||||||
|
|
20
callseed.php
20
callseed.php
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'callseed');
|
define('BB_SCRIPT', 'callseed');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require_once __DIR__ . '/common.php';
|
require_once __DIR__ . '/common.php';
|
||||||
|
@ -48,18 +50,18 @@ if ($t_data['seeders'] > 2) {
|
||||||
|
|
||||||
$ban_user_id = [];
|
$ban_user_id = [];
|
||||||
|
|
||||||
$sql = DB()->fetch_rowset("SELECT ban_userid FROM " . BB_BANLIST . " WHERE ban_userid != 0");
|
$sql = Di::getInstance()->db->fetch_rowset("SELECT ban_userid FROM " . BB_BANLIST . " WHERE ban_userid != 0");
|
||||||
|
|
||||||
foreach ($sql as $row) {
|
foreach ($sql as $row) {
|
||||||
$ban_user_id[] = ',' . $row['ban_userid'];
|
$ban_user_id[] = ',' . $row['ban_userid'];
|
||||||
}
|
}
|
||||||
$ban_user_id = join('', $ban_user_id);
|
$ban_user_id = join('', $ban_user_id);
|
||||||
|
|
||||||
$user_list = DB()->fetch_rowset("
|
$user_list = Di::getInstance()->db->fetch_rowset("
|
||||||
SELECT DISTINCT dl.user_id, u.user_opt, tr.user_id as active_dl
|
SELECT DISTINCT dl.user_id, u.user_opt, tr.user_id as active_dl
|
||||||
FROM " . BB_BT_DLSTATUS . " dl
|
FROM " . BB_BT_DLSTATUS . " dl
|
||||||
LEFT JOIN " . BB_USERS . " u ON(u.user_id = dl.user_id)
|
LEFT JOIN bb_users u ON(u.user_id = dl.user_id)
|
||||||
LEFT JOIN " . BB_BT_TRACKER . " tr ON(tr.user_id = dl.user_id)
|
LEFT JOIN bb_bt_tracker tr ON(tr.user_id = dl.user_id)
|
||||||
WHERE dl.topic_id = $topic_id
|
WHERE dl.topic_id = $topic_id
|
||||||
AND dl.user_status IN (" . DL_STATUS_COMPLETE . ", " . DL_STATUS_DOWN . ")
|
AND dl.user_status IN (" . DL_STATUS_COMPLETE . ", " . DL_STATUS_DOWN . ")
|
||||||
AND dl.user_id NOT IN ({$userdata['user_id']}, " . EXCLUDED_USERS . $ban_user_id . ")
|
AND dl.user_id NOT IN ({$userdata['user_id']}, " . EXCLUDED_USERS . $ban_user_id . ")
|
||||||
|
@ -84,7 +86,7 @@ if ($user_list) {
|
||||||
send_pm($t_data['poster_id'], $subject, $message, BOT_UID);
|
send_pm($t_data['poster_id'], $subject, $message, BOT_UID);
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("UPDATE " . BB_BT_TORRENTS . " SET call_seed_time = " . TIMENOW . " WHERE topic_id = $topic_id LIMIT 1");
|
Di::getInstance()->db->query("UPDATE bb_bt_torrents SET call_seed_time = " . TIMENOW . " WHERE topic_id = $topic_id LIMIT 1");
|
||||||
|
|
||||||
meta_refresh(TOPIC_URL . $topic_id);
|
meta_refresh(TOPIC_URL . $topic_id);
|
||||||
bb_die($lang['CALLSEED_MSG_OK']);
|
bb_die($lang['CALLSEED_MSG_OK']);
|
||||||
|
@ -97,13 +99,13 @@ function topic_info($topic_id)
|
||||||
SELECT
|
SELECT
|
||||||
tor.poster_id, tor.forum_id, tor.call_seed_time,
|
tor.poster_id, tor.forum_id, tor.call_seed_time,
|
||||||
t.topic_title, sn.seeders
|
t.topic_title, sn.seeders
|
||||||
FROM " . BB_BT_TORRENTS . " tor
|
FROM bb_bt_torrents tor
|
||||||
LEFT JOIN " . BB_TOPICS . " t USING(topic_id)
|
LEFT JOIN bb_topics t USING(topic_id)
|
||||||
LEFT JOIN " . BB_BT_TRACKER_SNAP . " sn USING(topic_id)
|
LEFT JOIN bb_bt_tracker_snap sn USING(topic_id)
|
||||||
WHERE tor.topic_id = $topic_id
|
WHERE tor.topic_id = $topic_id
|
||||||
";
|
";
|
||||||
|
|
||||||
if (!$torrent = DB()->fetch_row($sql)) {
|
if (!$torrent = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
bb_die($lang['TOPIC_POST_NOT_EXIST']);
|
bb_die($lang['TOPIC_POST_NOT_EXIST']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
39
common.php
39
common.php
|
@ -23,6 +23,9 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use TorrentPier\Di;
|
||||||
|
use TorrentPier\ServiceProviders;
|
||||||
|
|
||||||
if (isset($_REQUEST['GLOBALS'])) {
|
if (isset($_REQUEST['GLOBALS'])) {
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
@ -64,16 +67,17 @@ require_once(BB_ROOT . 'vendor/autoload.php');
|
||||||
// Get initial config
|
// Get initial config
|
||||||
require_once(BB_ROOT . 'library/config.php');
|
require_once(BB_ROOT . 'library/config.php');
|
||||||
|
|
||||||
$di = new \TorrentPier\Di();
|
$di = new Di();
|
||||||
|
|
||||||
// TODO: Need to get locale from settings
|
// TODO: Need to get locale from settings
|
||||||
$di['settings.locale'] = function ($di) {
|
$di['settings.locale'] = function ($di) {
|
||||||
return 'en';
|
return 'en';
|
||||||
};
|
};
|
||||||
|
|
||||||
$di->register(new \TorrentPier\ServiceProviders\ConfigServiceProvider, [
|
$di->register(new ServiceProviders\ConfigServiceProvider, [
|
||||||
'file.system.main' => __DIR__ . '/library/config.php',
|
'file.system.main' => __DIR__ . '/configs/main.php',
|
||||||
'file.local.main' => __DIR__ . '/library/config.local.php',
|
'file.local.main' => __DIR__ . '/configs/local.php',
|
||||||
|
'config.dbQuery' => "SELECT config_name, config_value FROM bb_config"
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$di->register(new \TorrentPier\ServiceProviders\LogServiceProvider());
|
$di->register(new \TorrentPier\ServiceProviders\LogServiceProvider());
|
||||||
|
@ -86,9 +90,9 @@ $di->register(new \TorrentPier\ServiceProviders\TranslationServiceProvider());
|
||||||
$di->register(new \TorrentPier\ServiceProviders\TwigServiceProvider());
|
$di->register(new \TorrentPier\ServiceProviders\TwigServiceProvider());
|
||||||
$di->register(new \TorrentPier\ServiceProviders\CaptchaServiceProvider());
|
$di->register(new \TorrentPier\ServiceProviders\CaptchaServiceProvider());
|
||||||
|
|
||||||
$page_cfg = $di->config->page->toArray();
|
$page_cfg = $di->config->page;
|
||||||
$tr_cfg = $di->config->tracker->toArray();
|
$tr_cfg = $di->config->tracker;
|
||||||
$rating_limits = $di->config->rating->toArray();
|
$rating_limits = $di->config->rating;
|
||||||
define('BB_CFG_LOADED', true);
|
define('BB_CFG_LOADED', true);
|
||||||
|
|
||||||
// Load Zend Framework
|
// Load Zend Framework
|
||||||
|
@ -141,28 +145,17 @@ require(CORE_DIR . 'dbs.php');
|
||||||
$DBS = new DBS([
|
$DBS = new DBS([
|
||||||
'db' => [
|
'db' => [
|
||||||
'db' => [
|
'db' => [
|
||||||
$di->config->services->db->hostname,
|
$di->config->get("services.db.hostname"),
|
||||||
$di->config->services->db->database,
|
$di->config->get("services.db.database"),
|
||||||
$di->config->services->db->username,
|
$di->config->get("services.db.username"),
|
||||||
$di->config->services->db->password,
|
$di->config->get("services.db.password"),
|
||||||
$di->config->services->db->charset,
|
$di->config->get("services.db.charset"),
|
||||||
false
|
false
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'db_alias' => $di->config->get('db_alias')
|
'db_alias' => $di->config->get('db_alias')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO: @deprecated
|
|
||||||
* @param string $db_alias
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
function DB($db_alias = 'db')
|
|
||||||
{
|
|
||||||
global $DBS;
|
|
||||||
return $DBS->get_db_obj($db_alias);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Datastore
|
* Datastore
|
||||||
* TODO: @deprecated
|
* TODO: @deprecated
|
||||||
|
|
|
@ -30,11 +30,11 @@ return [
|
||||||
// Database
|
// Database
|
||||||
'db' => [
|
'db' => [
|
||||||
'debug' => '{self.debug}',
|
'debug' => '{self.debug}',
|
||||||
'driver' => 'Pdo_Mysql',
|
'type' => 'mysql',
|
||||||
'hostname' => '127.0.0.1',
|
'hostname' => '127.0.0.1',
|
||||||
'database' => 'tp_220',
|
'database' => 'tp_220',
|
||||||
'username' => 'user',
|
'username' => 'user',
|
||||||
'password' => 'pass',
|
'password' => function() { return 'pass'; },
|
||||||
'charset' => 'utf8'
|
'charset' => 'utf8'
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
14
dl_list.php
14
dl_list.php
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'dl_list');
|
define('BB_SCRIPT', 'dl_list');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require_once __DIR__ . '/common.php';
|
require_once __DIR__ . '/common.php';
|
||||||
|
@ -83,9 +85,9 @@ if (isset($_POST['cancel']) && $_POST['cancel']) {
|
||||||
// Delete DL-list
|
// Delete DL-list
|
||||||
if ($mode == 'dl_delete' && $topic_id) {
|
if ($mode == 'dl_delete' && $topic_id) {
|
||||||
if (!IS_ADMIN) {
|
if (!IS_ADMIN) {
|
||||||
$sql = "SELECT forum_id FROM " . BB_TOPICS . " WHERE topic_id = $topic_id LIMIT 1";
|
$sql = "SELECT forum_id FROM bb_topics WHERE topic_id = $topic_id LIMIT 1";
|
||||||
|
|
||||||
if (!$row = DB()->sql_fetchrow(DB()->sql_query($sql))) {
|
if (!$row = Di::getInstance()->db->sql_fetchrow(Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain forum_id for this topic');
|
bb_die('Could not obtain forum_id for this topic');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,9 +133,9 @@ if ($mode == 'set_topics_dl_status') {
|
||||||
|
|
||||||
// Get existing topics
|
// Get existing topics
|
||||||
if ($req_topics_sql = join(',', $req_topics_ary)) {
|
if ($req_topics_sql = join(',', $req_topics_ary)) {
|
||||||
$sql = "SELECT topic_id FROM " . BB_TOPICS . " WHERE topic_id IN($req_topics_sql)";
|
$sql = "SELECT topic_id FROM bb_topics WHERE topic_id IN($req_topics_sql)";
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$topics_ary[] = $row['topic_id'];
|
$topics_ary[] = $row['topic_id'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -148,9 +150,9 @@ if ($topics_ary && ($mode == 'set_dl_status' || $mode == 'set_topics_dl_status')
|
||||||
'user_status' => (int)$new_dl_status,
|
'user_status' => (int)$new_dl_status,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$new_dlstatus_sql = DB()->build_array('MULTI_INSERT', $new_dlstatus_ary);
|
$new_dlstatus_sql = Di::getInstance()->db->build_array('MULTI_INSERT', $new_dlstatus_ary);
|
||||||
|
|
||||||
DB()->query("REPLACE INTO " . BB_BT_DLSTATUS . " $new_dlstatus_sql");
|
Di::getInstance()->db->query("REPLACE INTO " . BB_BT_DLSTATUS . " $new_dlstatus_sql");
|
||||||
|
|
||||||
redirect("$redirect_type?$redirect");
|
redirect("$redirect_type?$redirect");
|
||||||
}
|
}
|
||||||
|
|
54
group.php
54
group.php
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'group');
|
define('BB_SCRIPT', 'group');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require(BB_ROOT . 'common.php');
|
require(BB_ROOT . 'common.php');
|
||||||
|
@ -113,7 +115,7 @@ if (!$group_id) {
|
||||||
" . BB_USER_GROUP . " ug2 ON
|
" . BB_USER_GROUP . " ug2 ON
|
||||||
ug2.group_id = g.group_id
|
ug2.group_id = g.group_id
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
" . BB_USERS . " u ON g.group_moderator = u.user_id
|
bb_users u ON g.group_moderator = u.user_id
|
||||||
WHERE
|
WHERE
|
||||||
g.group_single_user = 0
|
g.group_single_user = 0
|
||||||
GROUP BY g.group_id
|
GROUP BY g.group_id
|
||||||
|
@ -124,7 +126,7 @@ if (!$group_id) {
|
||||||
g.group_name ASC
|
g.group_name ASC
|
||||||
";
|
";
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
if ($row['is_group_mod']) {
|
if ($row['is_group_mod']) {
|
||||||
$type = 'MOD';
|
$type = 'MOD';
|
||||||
} elseif ($row['membership'] == $member) {
|
} elseif ($row['membership'] == $member) {
|
||||||
|
@ -198,14 +200,14 @@ if (!$group_id) {
|
||||||
|
|
||||||
$sql = "SELECT g.group_id, g.group_name, ug.user_id, u.user_email, u.username, u.user_lang
|
$sql = "SELECT g.group_id, g.group_name, ug.user_id, u.user_email, u.username, u.user_lang
|
||||||
FROM " . BB_GROUPS . " g
|
FROM " . BB_GROUPS . " g
|
||||||
LEFT JOIN " . BB_USERS . " u ON(u.user_id = g.group_moderator)
|
LEFT JOIN bb_users u ON(u.user_id = g.group_moderator)
|
||||||
LEFT JOIN " . BB_USER_GROUP . " ug ON(ug.group_id = g.group_id AND ug.user_id = {$userdata['user_id']})
|
LEFT JOIN " . BB_USER_GROUP . " ug ON(ug.group_id = g.group_id AND ug.user_id = {$userdata['user_id']})
|
||||||
WHERE g.group_id = $group_id
|
WHERE g.group_id = $group_id
|
||||||
AND group_single_user = 0
|
AND group_single_user = 0
|
||||||
AND g.group_type = " . GROUP_OPEN . "
|
AND g.group_type = " . GROUP_OPEN . "
|
||||||
LIMIT 1";
|
LIMIT 1";
|
||||||
|
|
||||||
$row = $moderator = DB()->fetch_row($sql);
|
$row = $moderator = Di::getInstance()->db->fetch_row($sql);
|
||||||
|
|
||||||
if (!$row['group_id']) {
|
if (!$row['group_id']) {
|
||||||
bb_die($lang['NO_GROUPS_EXIST']);
|
bb_die($lang['NO_GROUPS_EXIST']);
|
||||||
|
@ -291,7 +293,7 @@ if (!$group_id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($_POST['approve'])) {
|
if (!empty($_POST['approve'])) {
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
UPDATE " . BB_USER_GROUP . " SET
|
UPDATE " . BB_USER_GROUP . " SET
|
||||||
user_pending = 0
|
user_pending = 0
|
||||||
WHERE user_id IN($sql_in)
|
WHERE user_id IN($sql_in)
|
||||||
|
@ -300,7 +302,7 @@ if (!$group_id) {
|
||||||
|
|
||||||
update_user_level($sql_in);
|
update_user_level($sql_in);
|
||||||
} elseif (!empty($_POST['deny']) || !empty($_POST['remove'])) {
|
} elseif (!empty($_POST['deny']) || !empty($_POST['remove'])) {
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
DELETE FROM " . BB_USER_GROUP . "
|
DELETE FROM " . BB_USER_GROUP . "
|
||||||
WHERE user_id IN($sql_in)
|
WHERE user_id IN($sql_in)
|
||||||
AND group_id = $group_id
|
AND group_id = $group_id
|
||||||
|
@ -313,10 +315,10 @@ if (!$group_id) {
|
||||||
// Email users when they are approved
|
// Email users when they are approved
|
||||||
if (!empty($_POST['approve']) && $di->config->get('group_send_email')) {
|
if (!empty($_POST['approve']) && $di->config->get('group_send_email')) {
|
||||||
$sql_select = "SELECT username, user_email, user_lang
|
$sql_select = "SELECT username, user_email, user_lang
|
||||||
FROM " . BB_USERS . "
|
FROM bb_users
|
||||||
WHERE user_id IN($sql_in)";
|
WHERE user_id IN($sql_in)";
|
||||||
|
|
||||||
if (!$result = DB()->sql_query($sql_select)) {
|
if (!$result = Di::getInstance()->db->sql_query($sql_select)) {
|
||||||
bb_die('Could not get user email information');
|
bb_die('Could not get user email information');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,7 +327,7 @@ if (!$group_id) {
|
||||||
|
|
||||||
$emailer->from($di->config->get('sitename') . " <{$di->config->get('board_email')}>");
|
$emailer->from($di->config->get('sitename') . " <{$di->config->get('board_email')}>");
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql_select) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql_select) as $row) {
|
||||||
$emailer->use_template('group_approved', $row['user_lang']);
|
$emailer->use_template('group_approved', $row['user_lang']);
|
||||||
$emailer->email_address($row['username'] . " <{$row['user_email']}>");
|
$emailer->email_address($row['username'] . " <{$row['user_email']}>");
|
||||||
}
|
}
|
||||||
|
@ -345,9 +347,9 @@ if (!$group_id) {
|
||||||
// END approve or deny
|
// END approve or deny
|
||||||
|
|
||||||
// Get moderator details for this group
|
// Get moderator details for this group
|
||||||
$group_moderator = DB()->fetch_row("
|
$group_moderator = Di::getInstance()->db->fetch_row("
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM " . BB_USERS . "
|
FROM bb_users
|
||||||
WHERE user_id = " . $group_info['group_moderator'] . "
|
WHERE user_id = " . $group_info['group_moderator'] . "
|
||||||
");
|
");
|
||||||
|
|
||||||
|
@ -360,7 +362,7 @@ if (!$group_id) {
|
||||||
AND user_id = " . $userdata['user_id'] . "
|
AND user_id = " . $userdata['user_id'] . "
|
||||||
LIMIT 1";
|
LIMIT 1";
|
||||||
|
|
||||||
if ($row = DB()->fetch_row($sql)) {
|
if ($row = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
if ($row['user_pending'] == 0) {
|
if ($row['user_pending'] == 0) {
|
||||||
$is_group_member = true;
|
$is_group_member = true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -462,12 +464,12 @@ if (!$group_id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Count releases for pagination
|
// Count releases for pagination
|
||||||
$all_releases = DB()->fetch_rowset("
|
$all_releases = Di::getInstance()->db->fetch_rowset("
|
||||||
SELECT p.topic_id, p.forum_id, p.poster_id, t.topic_title, t.topic_time, f.forum_name, u.username, u.avatar_ext_id, u.user_opt, u.user_rank
|
SELECT p.topic_id, p.forum_id, p.poster_id, t.topic_title, t.topic_time, f.forum_name, u.username, u.avatar_ext_id, u.user_opt, u.user_rank
|
||||||
FROM " . BB_POSTS . " p
|
FROM " . BB_POSTS . " p
|
||||||
LEFT JOIN " . BB_TOPICS . " t ON(p.topic_id = t.topic_id)
|
LEFT JOIN bb_topics t ON(p.topic_id = t.topic_id)
|
||||||
LEFT JOIN " . BB_FORUMS . " f ON(p.forum_id= f.forum_id)
|
LEFT JOIN bb_forums f ON(p.forum_id= f.forum_id)
|
||||||
LEFT JOIN " . BB_USERS . " u ON(p.poster_id = u.user_id)
|
LEFT JOIN bb_users u ON(p.poster_id = u.user_id)
|
||||||
WHERE p.poster_rg_id = $group_id
|
WHERE p.poster_rg_id = $group_id
|
||||||
ORDER BY t.topic_time DESC
|
ORDER BY t.topic_time DESC
|
||||||
LIMIT $rel_limit
|
LIMIT $rel_limit
|
||||||
|
@ -479,15 +481,15 @@ if (!$group_id) {
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT p.topic_id, p.forum_id, p.poster_id, t.topic_title, t.topic_time, f.forum_name, u.username, u.avatar_ext_id, u.user_opt, u.user_rank
|
SELECT p.topic_id, p.forum_id, p.poster_id, t.topic_title, t.topic_time, f.forum_name, u.username, u.avatar_ext_id, u.user_opt, u.user_rank
|
||||||
FROM " . BB_POSTS . " p
|
FROM " . BB_POSTS . " p
|
||||||
LEFT JOIN " . BB_TOPICS . " t ON(p.topic_id = t.topic_id)
|
LEFT JOIN bb_topics t ON(p.topic_id = t.topic_id)
|
||||||
LEFT JOIN " . BB_FORUMS . " f ON(p.forum_id= f.forum_id)
|
LEFT JOIN bb_forums f ON(p.forum_id= f.forum_id)
|
||||||
LEFT JOIN " . BB_USERS . " u ON(p.poster_id = u.user_id)
|
LEFT JOIN bb_users u ON(p.poster_id = u.user_id)
|
||||||
WHERE p.poster_rg_id = $group_id
|
WHERE p.poster_rg_id = $group_id
|
||||||
ORDER BY t.topic_time DESC
|
ORDER BY t.topic_time DESC
|
||||||
LIMIT $start, $per_page
|
LIMIT $start, $per_page
|
||||||
";
|
";
|
||||||
|
|
||||||
if (!$releases = DB()->fetch_rowset($sql)) {
|
if (!$releases = Di::getInstance()->db->fetch_rowset($sql)) {
|
||||||
set_die_append_msg(false, false, $group_id);
|
set_die_append_msg(false, false, $group_id);
|
||||||
bb_die($lang['NO_SEARCH_MATCH']);
|
bb_die($lang['NO_SEARCH_MATCH']);
|
||||||
}
|
}
|
||||||
|
@ -516,9 +518,9 @@ if (!$group_id) {
|
||||||
default:
|
default:
|
||||||
|
|
||||||
// Members
|
// Members
|
||||||
$count_members = DB()->fetch_rowset("
|
$count_members = Di::getInstance()->db->fetch_rowset("
|
||||||
SELECT u.username, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time
|
SELECT u.username, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time
|
||||||
FROM " . BB_USER_GROUP . " ug, " . BB_USERS . " u
|
FROM " . BB_USER_GROUP . " ug, bb_users u
|
||||||
WHERE ug.group_id = $group_id
|
WHERE ug.group_id = $group_id
|
||||||
AND ug.user_pending = 0
|
AND ug.user_pending = 0
|
||||||
AND ug.user_id <> " . $group_moderator['user_id'] . "
|
AND ug.user_id <> " . $group_moderator['user_id'] . "
|
||||||
|
@ -531,9 +533,9 @@ if (!$group_id) {
|
||||||
$modgroup_pending_count = 0;
|
$modgroup_pending_count = 0;
|
||||||
|
|
||||||
// Members
|
// Members
|
||||||
$group_members = DB()->fetch_rowset("
|
$group_members = Di::getInstance()->db->fetch_rowset("
|
||||||
SELECT u.username, u.avatar_ext_id, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time
|
SELECT u.username, u.avatar_ext_id, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time
|
||||||
FROM " . BB_USER_GROUP . " ug, " . BB_USERS . " u
|
FROM " . BB_USER_GROUP . " ug, bb_users u
|
||||||
WHERE ug.group_id = $group_id
|
WHERE ug.group_id = $group_id
|
||||||
AND ug.user_pending = 0
|
AND ug.user_pending = 0
|
||||||
AND ug.user_id <> " . $group_moderator['user_id'] . "
|
AND ug.user_id <> " . $group_moderator['user_id'] . "
|
||||||
|
@ -587,9 +589,9 @@ if (!$group_id) {
|
||||||
|
|
||||||
// Pending
|
// Pending
|
||||||
if ($is_moderator) {
|
if ($is_moderator) {
|
||||||
$modgroup_pending_list = DB()->fetch_rowset("
|
$modgroup_pending_list = Di::getInstance()->db->fetch_rowset("
|
||||||
SELECT u.username, u.avatar_ext_id, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email
|
SELECT u.username, u.avatar_ext_id, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email
|
||||||
FROM " . BB_USER_GROUP . " ug, " . BB_USERS . " u
|
FROM " . BB_USER_GROUP . " ug, bb_users u
|
||||||
WHERE ug.group_id = $group_id
|
WHERE ug.group_id = $group_id
|
||||||
AND ug.user_pending = 1
|
AND ug.user_pending = 1
|
||||||
AND u.user_id = ug.user_id
|
AND u.user_id = ug.user_id
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'group_edit');
|
define('BB_SCRIPT', 'group_edit');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require(BB_ROOT . 'common.php');
|
require(BB_ROOT . 'common.php');
|
||||||
|
@ -65,7 +67,7 @@ if ($is_moderator) {
|
||||||
bb_die(implode($upload->errors));
|
bb_die(implode($upload->errors));
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("UPDATE " . BB_GROUPS . " SET avatar_ext_id = $avatar_ext_id WHERE group_id = $group_id LIMIT 1");
|
Di::getInstance()->db->query("UPDATE " . BB_GROUPS . " SET avatar_ext_id = $avatar_ext_id WHERE group_id = $group_id LIMIT 1");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
41
index.php
41
index.php
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'index');
|
define('BB_SCRIPT', 'index');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require_once __DIR__ . '/common.php';
|
require_once __DIR__ . '/common.php';
|
||||||
|
@ -132,11 +134,11 @@ $sql = "
|
||||||
t.topic_id AS last_topic_id, t.topic_title AS last_topic_title,
|
t.topic_id AS last_topic_id, t.topic_title AS last_topic_title,
|
||||||
u.user_id AS last_post_user_id, u.user_rank AS last_post_user_rank,
|
u.user_id AS last_post_user_id, u.user_rank AS last_post_user_rank,
|
||||||
IF(p.poster_id = $anon, p.post_username, u.username) AS last_post_username
|
IF(p.poster_id = $anon, p.post_username, u.username) AS last_post_username
|
||||||
FROM " . BB_CATEGORIES . " c
|
FROM bb_categories c
|
||||||
INNER JOIN " . BB_FORUMS . " f ON($forums_join_sql)
|
INNER JOIN bb_forums f ON($forums_join_sql)
|
||||||
$join_p_type " . BB_POSTS . " p ON($posts_join_sql)
|
$join_p_type " . BB_POSTS . " p ON($posts_join_sql)
|
||||||
$join_t_type " . BB_TOPICS . " t ON($topics_join_sql)
|
$join_t_type bb_topics t ON($topics_join_sql)
|
||||||
LEFT JOIN " . BB_USERS . " u ON(u.user_id = p.poster_id)
|
LEFT JOIN bb_users u ON(u.user_id = p.poster_id)
|
||||||
ORDER BY c.cat_order, f.forum_order
|
ORDER BY c.cat_order, f.forum_order
|
||||||
";
|
";
|
||||||
|
|
||||||
|
@ -153,7 +155,7 @@ $replace_in_parent = array(
|
||||||
$cache_name = 'index_sql_' . md5($sql);
|
$cache_name = 'index_sql_' . md5($sql);
|
||||||
if (!$cache->has($cache_name)) {
|
if (!$cache->has($cache_name)) {
|
||||||
$cat_forums = [];
|
$cat_forums = [];
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
if (!($cat_id = $row['cat_id']) || !($forum_id = $row['forum_id'])) {
|
if (!($cat_id = $row['cat_id']) || !($forum_id = $row['forum_id'])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -290,13 +292,30 @@ $template->assign_vars(array(
|
||||||
'TOTAL_TOPICS' => sprintf($lang['POSTED_TOPICS_TOTAL'], $stats['topiccount']),
|
'TOTAL_TOPICS' => sprintf($lang['POSTED_TOPICS_TOTAL'], $stats['topiccount']),
|
||||||
'TOTAL_POSTS' => sprintf($lang['POSTED_ARTICLES_TOTAL'], $stats['postcount']),
|
'TOTAL_POSTS' => sprintf($lang['POSTED_ARTICLES_TOTAL'], $stats['postcount']),
|
||||||
'TOTAL_USERS' => sprintf($lang['REGISTERED_USERS_TOTAL'], $stats['usercount']),
|
'TOTAL_USERS' => sprintf($lang['REGISTERED_USERS_TOTAL'], $stats['usercount']),
|
||||||
'TOTAL_GENDER' => ($di->config->get('gender')) ? sprintf($lang['USERS_TOTAL_GENDER'], $stats['male'], $stats['female'], $stats['unselect']) : '',
|
'TOTAL_GENDER' => ($di->config->get('gender')) ? sprintf(
|
||||||
|
$lang['USERS_TOTAL_GENDER'],
|
||||||
|
$stats['male'] ?? 0,
|
||||||
|
$stats['female'] ?? 0,
|
||||||
|
$stats['unselect'] ?? 0
|
||||||
|
) : '',
|
||||||
'NEWEST_USER' => sprintf($lang['NEWEST_USER'], profile_url($stats['newestuser'])),
|
'NEWEST_USER' => sprintf($lang['NEWEST_USER'], profile_url($stats['newestuser'])),
|
||||||
|
|
||||||
// Tracker stats
|
// Tracker stats
|
||||||
'TORRENTS_STAT' => ($di->config->get('tor_stats')) ? sprintf($lang['TORRENTS_STAT'], $stats['torrentcount'], humn_size($stats['size'])) : '',
|
'TORRENTS_STAT' => ($di->config->get('tor_stats')) ? sprintf(
|
||||||
'PEERS_STAT' => ($di->config->get('tor_stats')) ? sprintf($lang['PEERS_STAT'], $stats['peers'], $stats['seeders'], $stats['leechers']) : '',
|
$lang['TORRENTS_STAT'],
|
||||||
'SPEED_STAT' => ($di->config->get('tor_stats')) ? sprintf($lang['SPEED_STAT'], humn_size($stats['speed']) . '/s') : '',
|
$stats['torrentcount'] ?? 0,
|
||||||
|
humn_size($stats['size'] ?? 0)
|
||||||
|
) : '',
|
||||||
|
'PEERS_STAT' => ($di->config->get('tor_stats')) ? sprintf(
|
||||||
|
$lang['PEERS_STAT'],
|
||||||
|
$stats['peers'] ?? 0,
|
||||||
|
$stats['seeders'] ?? 0,
|
||||||
|
$stats['leechers'] ?? 0
|
||||||
|
) : '',
|
||||||
|
'SPEED_STAT' => ($di->config->get('tor_stats')) ? sprintf(
|
||||||
|
$lang['SPEED_STAT'],
|
||||||
|
humn_size($stats['speed'] ?? 0) . '/s'
|
||||||
|
) : '',
|
||||||
'SHOW_MOD_INDEX' => $di->config->get('show_mod_index'),
|
'SHOW_MOD_INDEX' => $di->config->get('show_mod_index'),
|
||||||
'FORUM_IMG' => $images['forum'],
|
'FORUM_IMG' => $images['forum'],
|
||||||
'FORUM_NEW_IMG' => $images['forum_new'],
|
'FORUM_NEW_IMG' => $images['forum_new'],
|
||||||
|
@ -365,7 +384,7 @@ if ($di->config->get('birthday_check_day') && $di->config->get('birthday_enabled
|
||||||
$week_list = $today_list = array();
|
$week_list = $today_list = array();
|
||||||
$week_all = $today_all = false;
|
$week_all = $today_all = false;
|
||||||
|
|
||||||
if ($stats['birthday_week_list']) {
|
if (isset($stats['birthday_week_list'])) {
|
||||||
shuffle($stats['birthday_week_list']);
|
shuffle($stats['birthday_week_list']);
|
||||||
foreach ($stats['birthday_week_list'] as $i => $week) {
|
foreach ($stats['birthday_week_list'] as $i => $week) {
|
||||||
if ($i >= 5) {
|
if ($i >= 5) {
|
||||||
|
@ -380,7 +399,7 @@ if ($di->config->get('birthday_check_day') && $di->config->get('birthday_enabled
|
||||||
$week_list = sprintf($lang['NOBIRTHDAY_WEEK'], $di->config->get('birthday_check_day'));
|
$week_list = sprintf($lang['NOBIRTHDAY_WEEK'], $di->config->get('birthday_check_day'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($stats['birthday_today_list']) {
|
if (isset($stats['birthday_today_list'])) {
|
||||||
shuffle($stats['birthday_today_list']);
|
shuffle($stats['birthday_today_list']);
|
||||||
foreach ($stats['birthday_today_list'] as $i => $today) {
|
foreach ($stats['birthday_today_list'] as $i => $today) {
|
||||||
if ($i >= 5) {
|
if ($i >= 5) {
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -41,26 +42,26 @@ $limit_sql = 3000;
|
||||||
$topics_sql = [];
|
$topics_sql = [];
|
||||||
|
|
||||||
$sql = "SELECT topic_id
|
$sql = "SELECT topic_id
|
||||||
FROM " . BB_BT_TORRENTS . "
|
FROM bb_bt_torrents
|
||||||
WHERE reg_time < $never_seen_time
|
WHERE reg_time < $never_seen_time
|
||||||
AND seeder_last_seen < $last_seen_time
|
AND seeder_last_seen < $last_seen_time
|
||||||
LIMIT $limit_sql";
|
LIMIT $limit_sql";
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$topics_sql[] = $row['topic_id'];
|
$topics_sql[] = $row['topic_id'];
|
||||||
}
|
}
|
||||||
$dead_tor_sql = join(',', $topics_sql);
|
$dead_tor_sql = join(',', $topics_sql);
|
||||||
|
|
||||||
if ($dead_tor_sql) {
|
if ($dead_tor_sql) {
|
||||||
// Delete torstat
|
// Delete torstat
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
DELETE FROM " . BB_BT_TORSTAT . "
|
DELETE FROM " . BB_BT_TORSTAT . "
|
||||||
WHERE topic_id IN($dead_tor_sql)
|
WHERE topic_id IN($dead_tor_sql)
|
||||||
");
|
");
|
||||||
|
|
||||||
// Remove torrents
|
// Remove torrents
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
DELETE FROM " . BB_BT_TORRENTS . "
|
DELETE FROM bb_bt_torrents
|
||||||
WHERE topic_id IN($dead_tor_sql)
|
WHERE topic_id IN($dead_tor_sql)
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -30,7 +31,7 @@ if (!defined('BB_ROOT')) {
|
||||||
/** @var \TorrentPier\Di $di */
|
/** @var \TorrentPier\Di $di */
|
||||||
$di = \TorrentPier\Di::getInstance();
|
$di = \TorrentPier\Di::getInstance();
|
||||||
|
|
||||||
DB()->expect_slow_query(600);
|
Di::getInstance()->db->expect_slow_query(600);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Make tracker snapshot
|
// Make tracker snapshot
|
||||||
|
|
|
@ -22,19 +22,20 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
UPDATE
|
UPDATE
|
||||||
" . BUF_LAST_SEEDER . " b,
|
" . BUF_LAST_SEEDER . " b,
|
||||||
" . BB_BT_TORRENTS . " tor
|
bb_bt_torrents tor
|
||||||
SET
|
SET
|
||||||
tor.seeder_last_seen = b.seeder_last_seen
|
tor.seeder_last_seen = b.seeder_last_seen
|
||||||
WHERE
|
WHERE
|
||||||
tor.topic_id = b.topic_id
|
tor.topic_id = b.topic_id
|
||||||
");
|
");
|
||||||
|
|
||||||
DB()->query("TRUNCATE TABLE " . BUF_LAST_SEEDER);
|
Di::getInstance()->db->query("TRUNCATE TABLE " . BUF_LAST_SEEDER);
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -33,7 +34,7 @@ $di = \TorrentPier\Di::getInstance();
|
||||||
require_once(INC_DIR . 'functions_atom.php');
|
require_once(INC_DIR . 'functions_atom.php');
|
||||||
|
|
||||||
$timecheck = TIMENOW - 600;
|
$timecheck = TIMENOW - 600;
|
||||||
$forums_data = DB()->fetch_rowset("SELECT forum_id, allow_reg_tracker, forum_name FROM " . BB_FORUMS);
|
$forums_data = Di::getInstance()->db->fetch_rowset("SELECT forum_id, allow_reg_tracker, forum_name FROM " . BB_FORUMS);
|
||||||
|
|
||||||
if (file_exists($di->config->get('atom.path') . '/f/0.atom')) {
|
if (file_exists($di->config->get('atom.path') . '/f/0.atom')) {
|
||||||
if (filemtime($di->config->get('atom.path') . '/f/0.atom') <= $timecheck) {
|
if (filemtime($di->config->get('atom.path') . '/f/0.atom') <= $timecheck) {
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -31,7 +32,7 @@ $ranks = array();
|
||||||
|
|
||||||
$sql = "SELECT rank_id, rank_title, rank_image, rank_style FROM " . BB_RANKS;
|
$sql = "SELECT rank_id, rank_title, rank_image, rank_style FROM " . BB_RANKS;
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$ranks[$row['rank_id']] = $row;
|
$ranks[$row['rank_id']] = $row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -33,27 +34,27 @@ $di = \TorrentPier\Di::getInstance();
|
||||||
$data = [];
|
$data = [];
|
||||||
|
|
||||||
// usercount
|
// usercount
|
||||||
$row = DB()->fetch_row("SELECT COUNT(*) AS usercount FROM " . BB_USERS . " WHERE user_id NOT IN(" . EXCLUDED_USERS . ")");
|
$row = Di::getInstance()->db->fetch_row("SELECT COUNT(*) AS usercount FROM bb_users WHERE user_id NOT IN(" . EXCLUDED_USERS . ")");
|
||||||
$data['usercount'] = commify($row['usercount']);
|
$data['usercount'] = commify($row['usercount']);
|
||||||
|
|
||||||
// newestuser
|
// newestuser
|
||||||
$row = DB()->fetch_row("SELECT user_id, username, user_rank FROM " . BB_USERS . " WHERE user_active = 1 ORDER BY user_id DESC LIMIT 1");
|
$row = Di::getInstance()->db->fetch_row("SELECT user_id, username, user_rank FROM bb_users WHERE user_active = 1 ORDER BY user_id DESC LIMIT 1");
|
||||||
$data['newestuser'] = $row;
|
$data['newestuser'] = $row;
|
||||||
|
|
||||||
// post/topic count
|
// post/topic count
|
||||||
$row = DB()->fetch_row("SELECT SUM(forum_topics) AS topiccount, SUM(forum_posts) AS postcount FROM " . BB_FORUMS);
|
$row = Di::getInstance()->db->fetch_row("SELECT SUM(forum_topics) AS topiccount, SUM(forum_posts) AS postcount FROM " . BB_FORUMS);
|
||||||
$data['postcount'] = commify($row['postcount']);
|
$data['postcount'] = commify($row['postcount']);
|
||||||
$data['topiccount'] = commify($row['topiccount']);
|
$data['topiccount'] = commify($row['topiccount']);
|
||||||
|
|
||||||
// Tracker stats
|
// Tracker stats
|
||||||
if ($di->config->get('tor_stats')) {
|
if ($di->config->get('tor_stats')) {
|
||||||
// torrents stat
|
// torrents stat
|
||||||
$row = DB()->fetch_row("SELECT COUNT(topic_id) AS torrentcount, SUM(size) AS size FROM " . BB_BT_TORRENTS);
|
$row = Di::getInstance()->db->fetch_row("SELECT COUNT(topic_id) AS torrentcount, SUM(size) AS size FROM " . BB_BT_TORRENTS);
|
||||||
$data['torrentcount'] = commify($row['torrentcount']);
|
$data['torrentcount'] = commify($row['torrentcount']);
|
||||||
$data['size'] = $row['size'];
|
$data['size'] = $row['size'];
|
||||||
|
|
||||||
// peers stat
|
// peers stat
|
||||||
$row = DB()->fetch_row("SELECT SUM(seeders) AS seeders, SUM(leechers) AS leechers, ((SUM(speed_up) + SUM(speed_down))/2) AS speed FROM " . BB_BT_TRACKER_SNAP);
|
$row = Di::getInstance()->db->fetch_row("SELECT SUM(seeders) AS seeders, SUM(leechers) AS leechers, ((SUM(speed_up) + SUM(speed_down))/2) AS speed FROM bb_bt_tracker_snap");
|
||||||
$data['seeders'] = commify($row['seeders']);
|
$data['seeders'] = commify($row['seeders']);
|
||||||
$data['leechers'] = commify($row['leechers']);
|
$data['leechers'] = commify($row['leechers']);
|
||||||
$data['peers'] = commify($row['seeders'] + $row['leechers']);
|
$data['peers'] = commify($row['seeders'] + $row['leechers']);
|
||||||
|
@ -62,9 +63,9 @@ if ($di->config->get('tor_stats')) {
|
||||||
|
|
||||||
// gender stat
|
// gender stat
|
||||||
if ($di->config->get('gender')) {
|
if ($di->config->get('gender')) {
|
||||||
$male = DB()->fetch_row("SELECT COUNT(user_id) AS male FROM " . BB_USERS . " WHERE user_gender = " . MALE . " AND user_id NOT IN(" . EXCLUDED_USERS . ")");
|
$male = Di::getInstance()->db->fetch_row("SELECT COUNT(user_id) AS male FROM bb_users WHERE user_gender = " . MALE . " AND user_id NOT IN(" . EXCLUDED_USERS . ")");
|
||||||
$female = DB()->fetch_row("SELECT COUNT(user_id) AS female FROM " . BB_USERS . " WHERE user_gender = " . FEMALE . " AND user_id NOT IN(" . EXCLUDED_USERS . ")");
|
$female = Di::getInstance()->db->fetch_row("SELECT COUNT(user_id) AS female FROM bb_users WHERE user_gender = " . FEMALE . " AND user_id NOT IN(" . EXCLUDED_USERS . ")");
|
||||||
$unselect = DB()->fetch_row("SELECT COUNT(user_id) AS unselect FROM " . BB_USERS . " WHERE user_gender = 0 AND user_id NOT IN(" . EXCLUDED_USERS . ")");
|
$unselect = Di::getInstance()->db->fetch_row("SELECT COUNT(user_id) AS unselect FROM bb_users WHERE user_gender = 0 AND user_id NOT IN(" . EXCLUDED_USERS . ")");
|
||||||
|
|
||||||
$data['male'] = $male['male'];
|
$data['male'] = $male['male'];
|
||||||
$data['female'] = $female['female'];
|
$data['female'] = $female['female'];
|
||||||
|
@ -73,8 +74,8 @@ if ($di->config->get('gender')) {
|
||||||
|
|
||||||
// birthday stat
|
// birthday stat
|
||||||
if ($di->config->get('birthday_check_day') && $di->config->get('birthday_enabled')) {
|
if ($di->config->get('birthday_check_day') && $di->config->get('birthday_enabled')) {
|
||||||
$sql = DB()->fetch_rowset("SELECT user_id, username, user_rank , user_birthday
|
$sql = Di::getInstance()->db->fetch_rowset("SELECT user_id, username, user_rank , user_birthday
|
||||||
FROM " . BB_USERS . "
|
FROM bb_users
|
||||||
WHERE user_id NOT IN(" . EXCLUDED_USERS . ")
|
WHERE user_id NOT IN(" . EXCLUDED_USERS . ")
|
||||||
AND user_birthday != '0000-00-00'
|
AND user_birthday != '0000-00-00'
|
||||||
AND user_active = 1
|
AND user_active = 1
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -32,22 +33,22 @@ if (empty($_GET['u']) || empty($_GET['act_key'])) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT user_active, user_id, username, user_email, user_newpasswd, user_lang, user_actkey
|
$sql = "SELECT user_active, user_id, username, user_email, user_newpasswd, user_lang, user_actkey
|
||||||
FROM " . BB_USERS . "
|
FROM bb_users
|
||||||
WHERE user_id = " . intval($_GET[POST_USERS_URL]);
|
WHERE user_id = " . intval($_GET[POST_USERS_URL]);
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain user information');
|
bb_die('Could not obtain user information');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row = DB()->sql_fetchrow($result)) {
|
if ($row = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
if ($row['user_active'] && trim($row['user_actkey']) == '') {
|
if ($row['user_active'] && trim($row['user_actkey']) == '') {
|
||||||
bb_die($lang['ALREADY_ACTIVATED']);
|
bb_die($lang['ALREADY_ACTIVATED']);
|
||||||
} elseif ((trim($row['user_actkey']) == trim($_GET['act_key'])) && (trim($row['user_actkey']) != '')) {
|
} elseif ((trim($row['user_actkey']) == trim($_GET['act_key'])) && (trim($row['user_actkey']) != '')) {
|
||||||
$sql_update_pass = ($row['user_newpasswd'] != '') ? ", user_password = '" . md5(md5($row['user_newpasswd'])) . "', user_newpasswd = ''" : '';
|
$sql_update_pass = ($row['user_newpasswd'] != '') ? ", user_password = '" . md5(md5($row['user_newpasswd'])) . "', user_newpasswd = ''" : '';
|
||||||
|
|
||||||
$sql = "UPDATE " . BB_USERS . "
|
$sql = "UPDATE bb_users
|
||||||
SET user_active = 1, user_actkey = ''" . $sql_update_pass . "
|
SET user_active = 1, user_actkey = ''" . $sql_update_pass . "
|
||||||
WHERE user_id = " . $row['user_id'];
|
WHERE user_id = " . $row['user_id'];
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not update users table');
|
bb_die('Could not update users table');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -62,7 +63,7 @@ if (isset($_POST['bonus_id'])) {
|
||||||
bb_die($message);
|
bb_die($message);
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("UPDATE " . BB_BT_USERS . " bu, " . BB_USERS . " u
|
Di::getInstance()->db->query("UPDATE " . BB_BT_USERS . " bu, bb_users u
|
||||||
SET
|
SET
|
||||||
bu.u_up_total = u_up_total + $upload,
|
bu.u_up_total = u_up_total + $upload,
|
||||||
u.user_points = u.user_points - $points
|
u.user_points = u.user_points - $points
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -50,11 +51,11 @@ if (!$userdata['session_logged_in']) {
|
||||||
$errors = array();
|
$errors = array();
|
||||||
|
|
||||||
$sql = "SELECT username, user_id, user_rank, user_email, user_lang
|
$sql = "SELECT username, user_id, user_rank, user_email, user_lang
|
||||||
FROM " . BB_USERS . "
|
FROM bb_users
|
||||||
WHERE user_id = $user_id
|
WHERE user_id = $user_id
|
||||||
";
|
";
|
||||||
|
|
||||||
if ($row = DB()->fetch_row($sql)) {
|
if ($row = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
$username = $row['username'];
|
$username = $row['username'];
|
||||||
$user_email = $row['user_email'];
|
$user_email = $row['user_email'];
|
||||||
$user_lang = $row['user_lang'];
|
$user_lang = $row['user_lang'];
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -74,7 +75,7 @@ switch ($mode) {
|
||||||
if (!IS_ADMIN) {
|
if (!IS_ADMIN) {
|
||||||
// Ограничение по ip
|
// Ограничение по ip
|
||||||
if ($di->config->get('unique_ip')) {
|
if ($di->config->get('unique_ip')) {
|
||||||
if ($users = DB()->fetch_row("SELECT user_id, username FROM " . BB_USERS . " WHERE user_reg_ip = '" . USER_IP . "' LIMIT 1")) {
|
if ($users = Di::getInstance()->db->fetch_row("SELECT user_id, username FROM bb_users WHERE user_reg_ip = '" . USER_IP . "' LIMIT 1")) {
|
||||||
bb_die(sprintf($lang['ALREADY_REG_IP'], '<a href="' . PROFILE_URL . $users['user_id'] . '"><b>' . $users['username'] . '</b></a>', $di->config->get('tech_admin_email')));
|
bb_die(sprintf($lang['ALREADY_REG_IP'], '<a href="' . PROFILE_URL . $users['user_id'] . '"><b>' . $users['username'] . '</b></a>', $di->config->get('tech_admin_email')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,11 +158,11 @@ switch ($mode) {
|
||||||
user_rank,
|
user_rank,
|
||||||
user_level,
|
user_level,
|
||||||
$profile_fields_sql
|
$profile_fields_sql
|
||||||
FROM " . BB_USERS . "
|
FROM bb_users
|
||||||
WHERE user_id = $pr_user_id
|
WHERE user_id = $pr_user_id
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
";
|
";
|
||||||
if (!$pr_data = DB()->fetch_row($sql)) {
|
if (!$pr_data = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
bb_die($lang['PROFILE_NOT_FOUND']);
|
bb_die($lang['PROFILE_NOT_FOUND']);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -576,10 +577,10 @@ if ($submit && !$errors) {
|
||||||
$db_data['tpl_name'] = (string)$di->config->get('tpl_name');
|
$db_data['tpl_name'] = (string)$di->config->get('tpl_name');
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_args = DB()->build_array('INSERT', $db_data);
|
$sql_args = Di::getInstance()->db->build_array('INSERT', $db_data);
|
||||||
|
|
||||||
DB()->query("INSERT INTO " . BB_USERS . $sql_args);
|
Di::getInstance()->db->query("INSERT INTO " . BB_USERS . $sql_args);
|
||||||
$new_user_id = DB()->sql_nextid();
|
$new_user_id = Di::getInstance()->db->sql_nextid();
|
||||||
|
|
||||||
if (IS_ADMIN) {
|
if (IS_ADMIN) {
|
||||||
set_pr_die_append_msg($new_user_id);
|
set_pr_die_append_msg($new_user_id);
|
||||||
|
@ -648,9 +649,9 @@ if ($submit && !$errors) {
|
||||||
$message = $lang['PROFILE_UPDATED'];
|
$message = $lang['PROFILE_UPDATED'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_args = DB()->build_array('UPDATE', $db_data);
|
$sql_args = Di::getInstance()->db->build_array('UPDATE', $db_data);
|
||||||
|
|
||||||
DB()->query("UPDATE " . BB_USERS . " SET $sql_args WHERE user_id = {$pr_data['user_id']} LIMIT 1");
|
Di::getInstance()->db->query("UPDATE bb_users SET $sql_args WHERE user_id = {$pr_data['user_id']} LIMIT 1");
|
||||||
|
|
||||||
if ($pr_data['user_id'] != $userdata['user_id']) {
|
if ($pr_data['user_id'] != $userdata['user_id']) {
|
||||||
if ($pr_data['user_level'] == MOD && !empty($db_data['username'])) {
|
if ($pr_data['user_level'] == MOD && !empty($db_data['username'])) {
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -43,9 +44,9 @@ if (isset($_POST['submit'])) {
|
||||||
bb_die($lang['CAPTCHA_WRONG']);
|
bb_die($lang['CAPTCHA_WRONG']);
|
||||||
}
|
}
|
||||||
$email = (!empty($_POST['email'])) ? trim(strip_tags(htmlspecialchars($_POST['email']))) : '';
|
$email = (!empty($_POST['email'])) ? trim(strip_tags(htmlspecialchars($_POST['email']))) : '';
|
||||||
$sql = "SELECT * FROM " . BB_USERS . " WHERE user_email = '" . DB()->escape($email) . "'";
|
$sql = "SELECT * FROM bb_users WHERE user_email = '" . Di::getInstance()->db->escape($email) . "'";
|
||||||
if ($result = DB()->sql_query($sql)) {
|
if ($result = Di::getInstance()->db->sql_query($sql)) {
|
||||||
if ($row = DB()->sql_fetchrow($result)) {
|
if ($row = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
if (!$row['user_active']) {
|
if (!$row['user_active']) {
|
||||||
bb_die($lang['NO_SEND_ACCOUNT_INACTIVE']);
|
bb_die($lang['NO_SEND_ACCOUNT_INACTIVE']);
|
||||||
}
|
}
|
||||||
|
@ -59,10 +60,10 @@ if (isset($_POST['submit'])) {
|
||||||
$user_actkey = make_rand_str(12);
|
$user_actkey = make_rand_str(12);
|
||||||
$user_password = make_rand_str(8);
|
$user_password = make_rand_str(8);
|
||||||
|
|
||||||
$sql = "UPDATE " . BB_USERS . "
|
$sql = "UPDATE bb_users
|
||||||
SET user_newpasswd = '$user_password', user_actkey = '$user_actkey'
|
SET user_newpasswd = '$user_password', user_actkey = '$user_actkey'
|
||||||
WHERE user_id = " . $row['user_id'];
|
WHERE user_id = " . $row['user_id'];
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not update new password information');
|
bb_die('Could not update new password information');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
/** @var \TorrentPier\Di $di */
|
/** @var \TorrentPier\Di $di */
|
||||||
$di = \TorrentPier\Di::getInstance();
|
$di = \TorrentPier\Di::getInstance();
|
||||||
|
@ -41,7 +42,7 @@ $per_page = $di->config->get('topics_per_page');
|
||||||
if (isset($_POST['topic_id_list'])) {
|
if (isset($_POST['topic_id_list'])) {
|
||||||
$topic_ids = implode(",", $_POST['topic_id_list']);
|
$topic_ids = implode(",", $_POST['topic_id_list']);
|
||||||
$sql = "DELETE FROM " . BB_TOPICS_WATCH . " WHERE topic_id IN(" . $topic_ids . ") AND user_id = $user_id";
|
$sql = "DELETE FROM " . BB_TOPICS_WATCH . " WHERE topic_id IN(" . $topic_ids . ") AND user_id = $user_id";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not delete topic watch information #1');
|
bb_die('Could not delete topic watch information #1');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,17 +53,17 @@ $template->assign_vars(array(
|
||||||
));
|
));
|
||||||
|
|
||||||
$sql = "SELECT COUNT(topic_id) as watch_count FROM " . BB_TOPICS_WATCH . " WHERE user_id = $user_id";
|
$sql = "SELECT COUNT(topic_id) as watch_count FROM " . BB_TOPICS_WATCH . " WHERE user_id = $user_id";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain watch topic information #2');
|
bb_die('Could not obtain watch topic information #2');
|
||||||
}
|
}
|
||||||
$row = DB()->sql_fetchrow($result);
|
$row = Di::getInstance()->db->sql_fetchrow($result);
|
||||||
$watch_count = ($row['watch_count']) ? $row['watch_count'] : 0;
|
$watch_count = ($row['watch_count']) ? $row['watch_count'] : 0;
|
||||||
DB()->sql_freeresult($result);
|
Di::getInstance()->db->sql_freeresult($result);
|
||||||
|
|
||||||
if ($watch_count > 0) {
|
if ($watch_count > 0) {
|
||||||
$sql = "SELECT w.*, t.*, f.*, u.*, u2.username as last_username, u2.user_id as last_user_id,
|
$sql = "SELECT w.*, t.*, f.*, u.*, u2.username as last_username, u2.user_id as last_user_id,
|
||||||
u2.user_level as last_user_level, u2.user_rank as last_user_rank
|
u2.user_level as last_user_level, u2.user_rank as last_user_rank
|
||||||
FROM " . BB_TOPICS_WATCH . " w, " . BB_TOPICS . " t, " . BB_USERS . " u, " . BB_FORUMS . " f, " . BB_POSTS . " p, " . BB_USERS . " u2
|
FROM " . BB_TOPICS_WATCH . " w, bb_topics t, bb_users u, bb_forums f, " . BB_POSTS . " p, bb_users u2
|
||||||
WHERE w.topic_id = t.topic_id
|
WHERE w.topic_id = t.topic_id
|
||||||
AND t.forum_id = f.forum_id
|
AND t.forum_id = f.forum_id
|
||||||
AND p.post_id = t.topic_last_post_id
|
AND p.post_id = t.topic_last_post_id
|
||||||
|
@ -71,10 +72,10 @@ if ($watch_count > 0) {
|
||||||
AND w.user_id = $user_id
|
AND w.user_id = $user_id
|
||||||
GROUP BY t.topic_last_post_time DESC
|
GROUP BY t.topic_last_post_time DESC
|
||||||
LIMIT $start, $per_page";
|
LIMIT $start, $per_page";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain watch topic information #3');
|
bb_die('Could not obtain watch topic information #3');
|
||||||
}
|
}
|
||||||
$watch = DB()->sql_fetchrowset($result);
|
$watch = Di::getInstance()->db->sql_fetchrowset($result);
|
||||||
|
|
||||||
if ($watch) {
|
if ($watch) {
|
||||||
for ($i = 0; $i < count($watch); $i++) {
|
for ($i = 0; $i < count($watch); $i++) {
|
||||||
|
@ -107,7 +108,7 @@ if ($watch_count > 0) {
|
||||||
'PER_PAGE' => $per_page,
|
'PER_PAGE' => $per_page,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
DB()->sql_freeresult($result);
|
Di::getInstance()->db->sql_freeresult($result);
|
||||||
} else {
|
} else {
|
||||||
meta_refresh('index.php', 3);
|
meta_refresh('index.php', 3);
|
||||||
bb_die($lang['NO_WATCHED_TOPICS']);
|
bb_die($lang['NO_WATCHED_TOPICS']);
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('BB_ROOT')) {
|
if (!defined('BB_ROOT')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -145,7 +146,7 @@ if (IS_ADMIN) {
|
||||||
GROUP BY ug.user_id, g.group_single_user, ug.user_pending
|
GROUP BY ug.user_id, g.group_single_user, ug.user_pending
|
||||||
ORDER BY NULL
|
ORDER BY NULL
|
||||||
";
|
";
|
||||||
if ($rowset = DB()->fetch_rowset($sql)) {
|
if ($rowset = Di::getInstance()->db->fetch_rowset($sql)) {
|
||||||
$member = $pending = $single = 0;
|
$member = $pending = $single = 0;
|
||||||
foreach ($rowset as $row) {
|
foreach ($rowset as $row) {
|
||||||
if (!$row['group_single_user'] && !$row['user_pending']) {
|
if (!$row['group_single_user'] && !$row['user_pending']) {
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
if (!defined('IN_PROFILE')) {
|
if (!defined('IN_PROFILE')) {
|
||||||
die(basename(__FILE__));
|
die(basename(__FILE__));
|
||||||
|
@ -37,12 +38,12 @@ $not_auth_forums_sql = ($excluded_forums_csv) ? "
|
||||||
AND f.forum_parent NOT IN($excluded_forums_csv)
|
AND f.forum_parent NOT IN($excluded_forums_csv)
|
||||||
" : '';
|
" : '';
|
||||||
|
|
||||||
$sql = DB()->fetch_rowset("
|
$sql = Di::getInstance()->db->fetch_rowset("
|
||||||
SELECT
|
SELECT
|
||||||
f.forum_id, f.forum_name, t.topic_title,
|
f.forum_id, f.forum_name, t.topic_title,
|
||||||
tor.tor_type, tor.size,
|
tor.tor_type, tor.size,
|
||||||
sn.seeders, sn.leechers, tr.*
|
sn.seeders, sn.leechers, tr.*
|
||||||
FROM " . BB_FORUMS . " f, " . BB_TOPICS . " t, " . BB_BT_TRACKER . " tr, " . BB_BT_TORRENTS . " tor, " . BB_BT_TRACKER_SNAP . " sn
|
FROM bb_forums f, bb_topics t, bb_bt_tracker tr, bb_bt_torrents tor, bb_bt_tracker_snap sn
|
||||||
WHERE tr.user_id = {$profiledata['user_id']}
|
WHERE tr.user_id = {$profiledata['user_id']}
|
||||||
AND tr.topic_id = tor.topic_id
|
AND tr.topic_id = tor.topic_id
|
||||||
AND sn.topic_id = tor.topic_id
|
AND sn.topic_id = tor.topic_id
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'memberlist');
|
define('BB_SCRIPT', 'memberlist');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require(BB_ROOT . 'common.php');
|
require(BB_ROOT . 'common.php');
|
||||||
|
@ -138,7 +140,7 @@ if ($by_letter_req) {
|
||||||
$by_letter = 'others';
|
$by_letter = 'others';
|
||||||
$letter_sql = "username REGEXP '^[!-@\\[-`].*$'";
|
$letter_sql = "username REGEXP '^[!-@\\[-`].*$'";
|
||||||
} elseif ($letter_req = preg_replace("#[^$letters_range]#ui", '', iconv('windows-1251', 'UTF-8', $by_letter_req[0]))) {
|
} elseif ($letter_req = preg_replace("#[^$letters_range]#ui", '', iconv('windows-1251', 'UTF-8', $by_letter_req[0]))) {
|
||||||
$by_letter = DB()->escape($letter_req);
|
$by_letter = Di::getInstance()->db->escape($letter_req);
|
||||||
$letter_sql = "LOWER(username) LIKE '$by_letter%'";
|
$letter_sql = "LOWER(username) LIKE '$by_letter%'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -164,15 +166,15 @@ $template->assign_vars(array(
|
||||||
));
|
));
|
||||||
|
|
||||||
// per-letter selection end
|
// per-letter selection end
|
||||||
$sql = "SELECT username, user_id, user_rank, user_opt, user_posts, user_regdate, user_from, user_website, user_email FROM " . BB_USERS . " WHERE user_id NOT IN(" . EXCLUDED_USERS . ")";
|
$sql = "SELECT username, user_id, user_rank, user_opt, user_posts, user_regdate, user_from, user_website, user_email FROM bb_users WHERE user_id NOT IN(" . EXCLUDED_USERS . ")";
|
||||||
if ($username) {
|
if ($username) {
|
||||||
$username = preg_replace('/\*/', '%', clean_username($username));
|
$username = preg_replace('/\*/', '%', clean_username($username));
|
||||||
$letter_sql = "username LIKE '" . DB()->escape($username) . "'";
|
$letter_sql = "username LIKE '" . Di::getInstance()->db->escape($username) . "'";
|
||||||
}
|
}
|
||||||
$sql .= ($letter_sql) ? " AND $letter_sql" : '';
|
$sql .= ($letter_sql) ? " AND $letter_sql" : '';
|
||||||
$sql .= " ORDER BY $order_by";
|
$sql .= " ORDER BY $order_by";
|
||||||
|
|
||||||
if ($result = DB()->fetch_rowset($sql)) {
|
if ($result = Di::getInstance()->db->fetch_rowset($sql)) {
|
||||||
foreach ($result as $i => $row) {
|
foreach ($result as $i => $row) {
|
||||||
$user_id = $row['user_id'];
|
$user_id = $row['user_id'];
|
||||||
$from = $row['user_from'];
|
$from = $row['user_from'];
|
||||||
|
@ -221,14 +223,14 @@ if ($paginationusername) {
|
||||||
if ($mode != 'topten' || $di->config->get('topics_per_page') < 10) {
|
if ($mode != 'topten' || $di->config->get('topics_per_page') < 10) {
|
||||||
$sql = "SELECT COUNT(*) AS total FROM " . BB_USERS;
|
$sql = "SELECT COUNT(*) AS total FROM " . BB_USERS;
|
||||||
$sql .= ($letter_sql) ? " WHERE $letter_sql" : '';
|
$sql .= ($letter_sql) ? " WHERE $letter_sql" : '';
|
||||||
if (!$result = DB()->sql_query($sql)) {
|
if (!$result = Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Error getting total users');
|
bb_die('Error getting total users');
|
||||||
}
|
}
|
||||||
if ($total = DB()->sql_fetchrow($result)) {
|
if ($total = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
$total_members = $total['total'];
|
$total_members = $total['total'];
|
||||||
generate_pagination($paginationurl, $total_members, $di->config->get('topics_per_page'), $start) . ' ';
|
generate_pagination($paginationurl, $total_members, $di->config->get('topics_per_page'), $start) . ' ';
|
||||||
}
|
}
|
||||||
DB()->sql_freeresult($result);
|
Di::getInstance()->db->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
|
|
96
modcp.php
96
modcp.php
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'modcp');
|
define('BB_SCRIPT', 'modcp');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require(BB_ROOT . 'common.php');
|
require(BB_ROOT . 'common.php');
|
||||||
|
@ -65,9 +67,9 @@ function validate_topics($forum_id, &$req_topics, &$topic_titles)
|
||||||
$valid_topics = $valid_titles = array();
|
$valid_topics = $valid_titles = array();
|
||||||
|
|
||||||
if ($topic_csv = get_id_csv($req_topics)) {
|
if ($topic_csv = get_id_csv($req_topics)) {
|
||||||
$sql = "SELECT topic_id, topic_title FROM " . BB_TOPICS . " WHERE topic_id IN($topic_csv) AND forum_id = $forum_id";
|
$sql = "SELECT topic_id, topic_title FROM bb_topics WHERE topic_id IN($topic_csv) AND forum_id = $forum_id";
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$valid_topics[] = $row['topic_id'];
|
$valid_topics[] = $row['topic_id'];
|
||||||
$valid_titles[] = $row['topic_title'];
|
$valid_titles[] = $row['topic_title'];
|
||||||
}
|
}
|
||||||
|
@ -124,13 +126,13 @@ if ($topic_id) {
|
||||||
SELECT
|
SELECT
|
||||||
f.forum_id, f.forum_name, f.forum_topics, f.self_moderated,
|
f.forum_id, f.forum_name, f.forum_topics, f.self_moderated,
|
||||||
t.topic_first_post_id, t.topic_poster
|
t.topic_first_post_id, t.topic_poster
|
||||||
FROM " . BB_TOPICS . " t, " . BB_FORUMS . " f
|
FROM bb_topics t, bb_forums f
|
||||||
WHERE t.topic_id = $topic_id
|
WHERE t.topic_id = $topic_id
|
||||||
AND f.forum_id = t.forum_id
|
AND f.forum_id = t.forum_id
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
";
|
";
|
||||||
|
|
||||||
if (!$topic_row = DB()->fetch_row($sql)) {
|
if (!$topic_row = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
bb_die('Topic post not exist');
|
bb_die('Topic post not exist');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,9 +140,9 @@ if ($topic_id) {
|
||||||
$forum_name = $topic_row['forum_name'];
|
$forum_name = $topic_row['forum_name'];
|
||||||
$forum_topics = (!$topic_row['forum_topics']) ? 1 : $topic_row['forum_topics'];
|
$forum_topics = (!$topic_row['forum_topics']) ? 1 : $topic_row['forum_topics'];
|
||||||
} elseif ($forum_id) {
|
} elseif ($forum_id) {
|
||||||
$sql = "SELECT forum_name, forum_topics FROM " . BB_FORUMS . " WHERE forum_id = $forum_id LIMIT 1";
|
$sql = "SELECT forum_name, forum_topics FROM bb_forums WHERE forum_id = $forum_id LIMIT 1";
|
||||||
|
|
||||||
if (!$topic_row = DB()->fetch_row($sql)) {
|
if (!$topic_row = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
bb_die('Forum not exist');
|
bb_die('Forum not exist');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,7 +327,7 @@ switch ($mode) {
|
||||||
|
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT topic_id, topic_title
|
SELECT topic_id, topic_title
|
||||||
FROM " . BB_TOPICS . "
|
FROM bb_topics
|
||||||
WHERE topic_id IN($topic_csv)
|
WHERE topic_id IN($topic_csv)
|
||||||
AND forum_id = $forum_id
|
AND forum_id = $forum_id
|
||||||
AND topic_status != " . TOPIC_MOVED . "
|
AND topic_status != " . TOPIC_MOVED . "
|
||||||
|
@ -334,7 +336,7 @@ switch ($mode) {
|
||||||
|
|
||||||
$topic_csv = array();
|
$topic_csv = array();
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$topic_csv[] = $row['topic_id'];
|
$topic_csv[] = $row['topic_id'];
|
||||||
$log_topics[$row['topic_id']] = $row['topic_title'];
|
$log_topics[$row['topic_id']] = $row['topic_title'];
|
||||||
}
|
}
|
||||||
|
@ -343,8 +345,8 @@ switch ($mode) {
|
||||||
bb_die($lang['NONE_SELECTED']);
|
bb_die($lang['NONE_SELECTED']);
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
UPDATE " . BB_TOPICS . " SET
|
UPDATE bb_topics SET
|
||||||
topic_status = $new_topic_status
|
topic_status = $new_topic_status
|
||||||
WHERE topic_id IN($topic_csv)
|
WHERE topic_id IN($topic_csv)
|
||||||
");
|
");
|
||||||
|
@ -371,8 +373,8 @@ switch ($mode) {
|
||||||
$set_download = ($mode == 'set_download');
|
$set_download = ($mode == 'set_download');
|
||||||
$new_dl_type = ($set_download) ? 1 : 0;
|
$new_dl_type = ($set_download) ? 1 : 0;
|
||||||
|
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
UPDATE " . BB_TOPICS . " SET
|
UPDATE bb_topics SET
|
||||||
tracker_status = $new_dl_type
|
tracker_status = $new_dl_type
|
||||||
WHERE topic_id IN($topic_csv)
|
WHERE topic_id IN($topic_csv)
|
||||||
AND forum_id = $forum_id
|
AND forum_id = $forum_id
|
||||||
|
@ -413,10 +415,10 @@ switch ($mode) {
|
||||||
AND topic_id = $topic_id
|
AND topic_id = $topic_id
|
||||||
AND forum_id = $forum_id";
|
AND forum_id = $forum_id";
|
||||||
|
|
||||||
if (!$result = DB()->sql_query($sql)) {
|
if (!$result = Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not get post id information');
|
bb_die('Could not get post id information');
|
||||||
}
|
}
|
||||||
if ($rowset = DB()->sql_fetchrowset($result)) {
|
if ($rowset = Di::getInstance()->db->sql_fetchrowset($result)) {
|
||||||
foreach ($rowset as $rid => $row) {
|
foreach ($rowset as $rid => $row) {
|
||||||
$post_id_sql[] = $row['post_id'];
|
$post_id_sql[] = $row['post_id'];
|
||||||
}
|
}
|
||||||
|
@ -432,11 +434,11 @@ switch ($mode) {
|
||||||
FROM " . BB_POSTS . "
|
FROM " . BB_POSTS . "
|
||||||
WHERE post_id IN ($post_id_sql)
|
WHERE post_id IN ($post_id_sql)
|
||||||
ORDER BY post_time ASC";
|
ORDER BY post_time ASC";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not get post information');
|
bb_die('Could not get post information');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row = DB()->sql_fetchrow($result)) {
|
if ($row = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
$first_poster = $row['poster_id'];
|
$first_poster = $row['poster_id'];
|
||||||
$topic_id = $row['topic_id'];
|
$topic_id = $row['topic_id'];
|
||||||
$post_time = $row['post_time'];
|
$post_time = $row['post_time'];
|
||||||
|
@ -446,7 +448,7 @@ switch ($mode) {
|
||||||
do {
|
do {
|
||||||
$user_id_sql .= (($user_id_sql != '') ? ', ' : '') . intval($row['poster_id']);
|
$user_id_sql .= (($user_id_sql != '') ? ', ' : '') . intval($row['poster_id']);
|
||||||
$post_id_sql .= (($post_id_sql != '') ? ', ' : '') . intval($row['post_id']);
|
$post_id_sql .= (($post_id_sql != '') ? ', ' : '') . intval($row['post_id']);
|
||||||
} while ($row = DB()->sql_fetchrow($result));
|
} while ($row = Di::getInstance()->db->sql_fetchrow($result));
|
||||||
|
|
||||||
$post_subject = clean_title($_POST['subject']);
|
$post_subject = clean_title($_POST['subject']);
|
||||||
if (empty($post_subject)) {
|
if (empty($post_subject)) {
|
||||||
|
@ -457,25 +459,25 @@ switch ($mode) {
|
||||||
$topic_time = TIMENOW;
|
$topic_time = TIMENOW;
|
||||||
|
|
||||||
$sql = 'SELECT forum_id FROM ' . BB_FORUMS . ' WHERE forum_id = ' . $new_forum_id;
|
$sql = 'SELECT forum_id FROM ' . BB_FORUMS . ' WHERE forum_id = ' . $new_forum_id;
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not select from forums table');
|
bb_die('Could not select from forums table');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!DB()->sql_fetchrow($result)) {
|
if (!Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
bb_die('New forum does not exist');
|
bb_die('New forum does not exist');
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->sql_freeresult($result);
|
Di::getInstance()->db->sql_freeresult($result);
|
||||||
|
|
||||||
$first_post_id = min(explode(',', $post_id_sql));
|
$first_post_id = min(explode(',', $post_id_sql));
|
||||||
|
|
||||||
$sql = "INSERT INTO " . BB_TOPICS . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_first_post_id)
|
$sql = "INSERT INTO bb_topics (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_first_post_id)
|
||||||
VALUES ('" . DB()->escape($post_subject) . "', $first_poster, " . $topic_time . ", $new_forum_id, " . TOPIC_UNLOCKED . ", " . POST_NORMAL . ", $first_post_id)";
|
VALUES ('" . Di::getInstance()->db->escape($post_subject) . "', $first_poster, " . $topic_time . ", $new_forum_id, " . TOPIC_UNLOCKED . ", " . POST_NORMAL . ", $first_post_id)";
|
||||||
if (!(DB()->sql_query($sql))) {
|
if (!(Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not insert new topic');
|
bb_die('Could not insert new topic');
|
||||||
}
|
}
|
||||||
|
|
||||||
$new_topic_id = DB()->sql_nextid();
|
$new_topic_id = Di::getInstance()->db->sql_nextid();
|
||||||
|
|
||||||
// Update topic watch table, switch users whose posts
|
// Update topic watch table, switch users whose posts
|
||||||
// have moved, over to watching the new topic
|
// have moved, over to watching the new topic
|
||||||
|
@ -483,14 +485,14 @@ switch ($mode) {
|
||||||
SET topic_id = $new_topic_id
|
SET topic_id = $new_topic_id
|
||||||
WHERE topic_id = $topic_id
|
WHERE topic_id = $topic_id
|
||||||
AND user_id IN ($user_id_sql)";
|
AND user_id IN ($user_id_sql)";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not update topics watch table');
|
bb_die('Could not update topics watch table');
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_where = (!empty($_POST['split_type_beyond'])) ? " post_time >= $post_time AND topic_id = $topic_id" : "post_id IN ($post_id_sql)";
|
$sql_where = (!empty($_POST['split_type_beyond'])) ? " post_time >= $post_time AND topic_id = $topic_id" : "post_id IN ($post_id_sql)";
|
||||||
|
|
||||||
$sql = "UPDATE " . BB_POSTS . " SET topic_id = $new_topic_id, forum_id = $new_forum_id WHERE $sql_where";
|
$sql = "UPDATE " . BB_POSTS . " SET topic_id = $new_topic_id, forum_id = $new_forum_id WHERE $sql_where";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not update posts table');
|
bb_die('Could not update posts table');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -533,19 +535,19 @@ switch ($mode) {
|
||||||
bb_die(return_msg_mcp($msg));
|
bb_die(return_msg_mcp($msg));
|
||||||
} else {
|
} else {
|
||||||
$sql = "SELECT u.username, p.*, pt.post_text, p.post_username
|
$sql = "SELECT u.username, p.*, pt.post_text, p.post_username
|
||||||
FROM " . BB_POSTS . " p, " . BB_USERS . " u, " . BB_POSTS_TEXT . " pt
|
FROM " . BB_POSTS . " p, bb_users u, " . BB_POSTS_TEXT . " pt
|
||||||
WHERE p.topic_id = $topic_id
|
WHERE p.topic_id = $topic_id
|
||||||
AND p.poster_id = u.user_id
|
AND p.poster_id = u.user_id
|
||||||
AND p.post_id = pt.post_id
|
AND p.post_id = pt.post_id
|
||||||
ORDER BY p.post_time ASC";
|
ORDER BY p.post_time ASC";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not get topic / post information');
|
bb_die('Could not get topic / post information');
|
||||||
}
|
}
|
||||||
|
|
||||||
$s_hidden_fields = '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" /><input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" /><input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" /><input type="hidden" name="mode" value="split" />';
|
$s_hidden_fields = '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" /><input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" /><input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" /><input type="hidden" name="mode" value="split" />';
|
||||||
|
|
||||||
if (($total_posts = DB()->num_rows($result)) > 0) {
|
if (($total_posts = Di::getInstance()->db->num_rows($result)) > 0) {
|
||||||
$postrow = DB()->sql_fetchrowset($result);
|
$postrow = Di::getInstance()->db->sql_fetchrowset($result);
|
||||||
|
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'FORUM_NAME' => htmlCHR($forum_name),
|
'FORUM_NAME' => htmlCHR($forum_name),
|
||||||
|
@ -603,11 +605,11 @@ switch ($mode) {
|
||||||
|
|
||||||
// Look up relevant data for this post
|
// Look up relevant data for this post
|
||||||
$sql = "SELECT * FROM " . BB_POSTS . " WHERE post_id = $post_id AND forum_id = $forum_id";
|
$sql = "SELECT * FROM " . BB_POSTS . " WHERE post_id = $post_id AND forum_id = $forum_id";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not get poster IP information');
|
bb_die('Could not get poster IP information');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!($post_row = DB()->sql_fetchrow($result))) {
|
if (!($post_row = Di::getInstance()->db->sql_fetchrow($result))) {
|
||||||
bb_die($lang['NO_SUCH_POST']);
|
bb_die($lang['NO_SUCH_POST']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -628,11 +630,11 @@ switch ($mode) {
|
||||||
$where_sql = ($poster_id == $anon) ? "post_username = '{$post_row['post_username']}'" : "poster_id = $poster_id";
|
$where_sql = ($poster_id == $anon) ? "post_username = '{$post_row['post_username']}'" : "poster_id = $poster_id";
|
||||||
|
|
||||||
$sql = "SELECT poster_ip, COUNT(*) AS postings FROM " . BB_POSTS . " WHERE $where_sql GROUP BY poster_ip ORDER BY postings DESC LIMIT 100";
|
$sql = "SELECT poster_ip, COUNT(*) AS postings FROM " . BB_POSTS . " WHERE $where_sql GROUP BY poster_ip ORDER BY postings DESC LIMIT 100";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not get IP information for this user');
|
bb_die('Could not get IP information for this user');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row = DB()->sql_fetchrow($result)) {
|
if ($row = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
do {
|
do {
|
||||||
if ($row['poster_ip'] == $post_row['poster_ip']) {
|
if ($row['poster_ip'] == $post_row['poster_ip']) {
|
||||||
|
@ -653,7 +655,7 @@ switch ($mode) {
|
||||||
));
|
));
|
||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
} while ($row = DB()->sql_fetchrow($result));
|
} while ($row = Di::getInstance()->db->sql_fetchrow($result));
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -663,17 +665,17 @@ switch ($mode) {
|
||||||
u.user_id,
|
u.user_id,
|
||||||
IF(u.user_id = $anon, p.post_username, u.username) AS username,
|
IF(u.user_id = $anon, p.post_username, u.username) AS username,
|
||||||
COUNT(*) as postings
|
COUNT(*) as postings
|
||||||
FROM " . BB_USERS . " u, " . BB_POSTS . " p
|
FROM bb_users u, " . BB_POSTS . " p
|
||||||
WHERE p.poster_id = u.user_id
|
WHERE p.poster_id = u.user_id
|
||||||
AND p.poster_ip = '" . $post_row['poster_ip'] . "'
|
AND p.poster_ip = '" . $post_row['poster_ip'] . "'
|
||||||
GROUP BY u.user_id, p.post_username
|
GROUP BY u.user_id, p.post_username
|
||||||
ORDER BY postings DESC
|
ORDER BY postings DESC
|
||||||
LIMIT 100";
|
LIMIT 100";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not get posters information based on IP');
|
bb_die('Could not get posters information based on IP');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row = DB()->sql_fetchrow($result)) {
|
if ($row = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
do {
|
do {
|
||||||
$id = $row['user_id'];
|
$id = $row['user_id'];
|
||||||
|
@ -688,7 +690,7 @@ switch ($mode) {
|
||||||
));
|
));
|
||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
} while ($row = DB()->sql_fetchrow($result));
|
} while ($row = Di::getInstance()->db->sql_fetchrow($result));
|
||||||
}
|
}
|
||||||
|
|
||||||
$template->set_filenames(array('body' => 'modcp.tpl'));
|
$template->set_filenames(array('body' => 'modcp.tpl'));
|
||||||
|
@ -702,7 +704,7 @@ switch ($mode) {
|
||||||
if (count($topic_csv)) {
|
if (count($topic_csv)) {
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT topic_id, topic_title
|
SELECT topic_id, topic_title
|
||||||
FROM " . BB_TOPICS . "
|
FROM bb_topics
|
||||||
WHERE topic_id IN($topic_csv)
|
WHERE topic_id IN($topic_csv)
|
||||||
AND forum_id = $forum_id
|
AND forum_id = $forum_id
|
||||||
AND topic_show_first_post != " . TOPIC_MOVED . "
|
AND topic_show_first_post != " . TOPIC_MOVED . "
|
||||||
|
@ -711,7 +713,7 @@ switch ($mode) {
|
||||||
|
|
||||||
$topic_csv = array();
|
$topic_csv = array();
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$topic_csv[] = $row['topic_id'];
|
$topic_csv[] = $row['topic_id'];
|
||||||
$log_topics[$row['topic_id']] = $row['topic_title'];
|
$log_topics[$row['topic_id']] = $row['topic_title'];
|
||||||
}
|
}
|
||||||
|
@ -720,8 +722,8 @@ switch ($mode) {
|
||||||
bb_die($lang['NONE_SELECTED']);
|
bb_die($lang['NONE_SELECTED']);
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
UPDATE " . BB_TOPICS . " SET
|
UPDATE bb_topics SET
|
||||||
topic_show_first_post = $new_topic_status
|
topic_show_first_post = $new_topic_status
|
||||||
WHERE topic_id IN($topic_csv)
|
WHERE topic_id IN($topic_csv)
|
||||||
");
|
");
|
||||||
|
@ -731,7 +733,7 @@ switch ($mode) {
|
||||||
} elseif ($topic_id) {
|
} elseif ($topic_id) {
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT topic_id, topic_title
|
SELECT topic_id, topic_title
|
||||||
FROM " . BB_TOPICS . "
|
FROM bb_topics
|
||||||
WHERE topic_id = $topic_id
|
WHERE topic_id = $topic_id
|
||||||
AND forum_id = $forum_id
|
AND forum_id = $forum_id
|
||||||
AND topic_show_first_post != " . TOPIC_MOVED . "
|
AND topic_show_first_post != " . TOPIC_MOVED . "
|
||||||
|
@ -741,7 +743,7 @@ switch ($mode) {
|
||||||
|
|
||||||
$topic_csv = array();
|
$topic_csv = array();
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$topic_csv[] = $row['topic_id'];
|
$topic_csv[] = $row['topic_id'];
|
||||||
$log_topics[$row['topic_id']] = $row['topic_title'];
|
$log_topics[$row['topic_id']] = $row['topic_title'];
|
||||||
}
|
}
|
||||||
|
@ -750,8 +752,8 @@ switch ($mode) {
|
||||||
bb_die($lang['NONE_SELECTED']);
|
bb_die($lang['NONE_SELECTED']);
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
UPDATE " . BB_TOPICS . " SET
|
UPDATE bb_topics SET
|
||||||
topic_show_first_post = $new_topic_status
|
topic_show_first_post = $new_topic_status
|
||||||
WHERE topic_id IN($topic_csv)
|
WHERE topic_id IN($topic_csv)
|
||||||
");
|
");
|
||||||
|
|
28
poll.php
28
poll.php
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'vote');
|
define('BB_SCRIPT', 'vote');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require_once __DIR__ . '/common.php';
|
require_once __DIR__ . '/common.php';
|
||||||
|
@ -51,7 +53,7 @@ $poll = new bb_poll();
|
||||||
if (!$topic_id) {
|
if (!$topic_id) {
|
||||||
bb_die('Invalid topic_id');
|
bb_die('Invalid topic_id');
|
||||||
}
|
}
|
||||||
if (!$t_data = DB()->fetch_row("SELECT * FROM " . BB_TOPICS . " WHERE topic_id = $topic_id LIMIT 1")) {
|
if (!$t_data = Di::getInstance()->db->fetch_row("SELECT * FROM bb_topics WHERE topic_id = $topic_id LIMIT 1")) {
|
||||||
bb_die('Topic not found');
|
bb_die('Topic not found');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,22 +91,22 @@ switch ($mode) {
|
||||||
if (!$vote_id) {
|
if (!$vote_id) {
|
||||||
bb_die($lang['NO_VOTE_OPTION']);
|
bb_die($lang['NO_VOTE_OPTION']);
|
||||||
}
|
}
|
||||||
if (DB()->fetch_row("SELECT 1 FROM " . BB_POLL_USERS . " WHERE topic_id = $topic_id AND user_id = {$userdata['user_id']} LIMIT 1")) {
|
if (Di::getInstance()->db->fetch_row("SELECT 1 FROM " . BB_POLL_USERS . " WHERE topic_id = $topic_id AND user_id = {$userdata['user_id']} LIMIT 1")) {
|
||||||
bb_die($lang['ALREADY_VOTED']);
|
bb_die($lang['ALREADY_VOTED']);
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
UPDATE " . BB_POLL_VOTES . " SET
|
UPDATE " . BB_POLL_VOTES . " SET
|
||||||
vote_result = vote_result + 1
|
vote_result = vote_result + 1
|
||||||
WHERE topic_id = $topic_id
|
WHERE topic_id = $topic_id
|
||||||
AND vote_id = $vote_id
|
AND vote_id = $vote_id
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
");
|
");
|
||||||
if (DB()->affected_rows() != 1) {
|
if (Di::getInstance()->db->affected_rows() != 1) {
|
||||||
bb_die($lang['NO_VOTE_OPTION']);
|
bb_die($lang['NO_VOTE_OPTION']);
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("INSERT IGNORE INTO " . BB_POLL_USERS . " (topic_id, user_id, vote_ip, vote_dt) VALUES ($topic_id, {$userdata['user_id']}, '" . USER_IP . "', " . TIMENOW . ")");
|
Di::getInstance()->db->query("INSERT IGNORE INTO " . BB_POLL_USERS . " (topic_id, user_id, vote_ip, vote_dt) VALUES ($topic_id, {$userdata['user_id']}, '" . USER_IP . "', " . TIMENOW . ")");
|
||||||
|
|
||||||
$cache->delete('poll_' . $topic_id);
|
$cache->delete('poll_' . $topic_id);
|
||||||
|
|
||||||
|
@ -116,7 +118,7 @@ switch ($mode) {
|
||||||
if (!$t_data['topic_vote']) {
|
if (!$t_data['topic_vote']) {
|
||||||
bb_die($lang['POST_HAS_NO_POLL']);
|
bb_die($lang['POST_HAS_NO_POLL']);
|
||||||
}
|
}
|
||||||
DB()->query("UPDATE " . BB_TOPICS . " SET topic_vote = 1 WHERE topic_id = $topic_id LIMIT 1");
|
Di::getInstance()->db->query("UPDATE bb_topics SET topic_vote = 1 WHERE topic_id = $topic_id LIMIT 1");
|
||||||
bb_die($lang['NEW_POLL_START']);
|
bb_die($lang['NEW_POLL_START']);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -125,7 +127,7 @@ switch ($mode) {
|
||||||
if (!$t_data['topic_vote']) {
|
if (!$t_data['topic_vote']) {
|
||||||
bb_die($lang['POST_HAS_NO_POLL']);
|
bb_die($lang['POST_HAS_NO_POLL']);
|
||||||
}
|
}
|
||||||
DB()->query("UPDATE " . BB_TOPICS . " SET topic_vote = " . POLL_FINISHED . " WHERE topic_id = $topic_id LIMIT 1");
|
Di::getInstance()->db->query("UPDATE bb_topics SET topic_vote = " . POLL_FINISHED . " WHERE topic_id = $topic_id LIMIT 1");
|
||||||
bb_die($lang['NEW_POLL_END']);
|
bb_die($lang['NEW_POLL_END']);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -225,16 +227,16 @@ class bb_poll
|
||||||
'vote_result' => (int)0,
|
'vote_result' => (int)0,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$sql_args = DB()->build_array('MULTI_INSERT', $sql_ary);
|
$sql_args = Di::getInstance()->db->build_array('MULTI_INSERT', $sql_ary);
|
||||||
|
|
||||||
DB()->query("REPLACE INTO " . BB_POLL_VOTES . $sql_args);
|
Di::getInstance()->db->query("REPLACE INTO " . BB_POLL_VOTES . $sql_args);
|
||||||
|
|
||||||
DB()->query("UPDATE " . BB_TOPICS . " SET topic_vote = 1 WHERE topic_id = $topic_id LIMIT 1");
|
Di::getInstance()->db->query("UPDATE bb_topics SET topic_vote = 1 WHERE topic_id = $topic_id LIMIT 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function delete_poll($topic_id)
|
public function delete_poll($topic_id)
|
||||||
{
|
{
|
||||||
DB()->query("UPDATE " . BB_TOPICS . " SET topic_vote = 0 WHERE topic_id = $topic_id LIMIT 1");
|
Di::getInstance()->db->query("UPDATE bb_topics SET topic_vote = 0 WHERE topic_id = $topic_id LIMIT 1");
|
||||||
$this->delete_votes_data($topic_id);
|
$this->delete_votes_data($topic_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,8 +248,8 @@ class bb_poll
|
||||||
/** @var \TorrentPier\Cache\Adapter $cache */
|
/** @var \TorrentPier\Cache\Adapter $cache */
|
||||||
$cache = $di->cache;
|
$cache = $di->cache;
|
||||||
|
|
||||||
DB()->query("DELETE FROM " . BB_POLL_VOTES . " WHERE topic_id = $topic_id");
|
Di::getInstance()->db->query("DELETE FROM " . BB_POLL_VOTES . " WHERE topic_id = $topic_id");
|
||||||
DB()->query("DELETE FROM " . BB_POLL_USERS . " WHERE topic_id = $topic_id");
|
Di::getInstance()->db->query("DELETE FROM " . BB_POLL_USERS . " WHERE topic_id = $topic_id");
|
||||||
|
|
||||||
$cache->delete('poll_' . $topic_id);
|
$cache->delete('poll_' . $topic_id);
|
||||||
}
|
}
|
||||||
|
|
34
posting.php
34
posting.php
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'posting');
|
define('BB_SCRIPT', 'posting');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require(BB_ROOT . "common.php");
|
require(BB_ROOT . "common.php");
|
||||||
|
@ -118,7 +120,7 @@ switch ($mode) {
|
||||||
if (!$forum_id) {
|
if (!$forum_id) {
|
||||||
bb_simple_die($lang['FORUM_NOT_EXIST']);
|
bb_simple_die($lang['FORUM_NOT_EXIST']);
|
||||||
}
|
}
|
||||||
$sql = "SELECT * FROM " . BB_FORUMS . " WHERE forum_id = $forum_id LIMIT 1";
|
$sql = "SELECT * FROM bb_forums WHERE forum_id = $forum_id LIMIT 1";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'reply':
|
case 'reply':
|
||||||
|
@ -126,7 +128,7 @@ switch ($mode) {
|
||||||
bb_simple_die($lang['NO_TOPIC_ID']);
|
bb_simple_die($lang['NO_TOPIC_ID']);
|
||||||
}
|
}
|
||||||
$sql = "SELECT f.*, t.*
|
$sql = "SELECT f.*, t.*
|
||||||
FROM " . BB_FORUMS . " f, " . BB_TOPICS . " t
|
FROM bb_forums f, bb_topics t
|
||||||
WHERE t.topic_id = $topic_id
|
WHERE t.topic_id = $topic_id
|
||||||
AND f.forum_id = t.forum_id
|
AND f.forum_id = t.forum_id
|
||||||
LIMIT 1";
|
LIMIT 1";
|
||||||
|
@ -142,8 +144,8 @@ switch ($mode) {
|
||||||
$select_sql = 'SELECT f.*, t.*, p.*';
|
$select_sql = 'SELECT f.*, t.*, p.*';
|
||||||
$select_sql .= (!$submit) ? ', pt.*, u.username, u.user_id' : '';
|
$select_sql .= (!$submit) ? ', pt.*, u.username, u.user_id' : '';
|
||||||
|
|
||||||
$from_sql = "FROM " . BB_POSTS . " p, " . BB_TOPICS . " t, " . BB_FORUMS . " f";
|
$from_sql = "FROM " . BB_POSTS . " p, bb_topics t, bb_forums f";
|
||||||
$from_sql .= (!$submit) ? ", " . BB_POSTS_TEXT . " pt, " . BB_USERS . " u" : '';
|
$from_sql .= (!$submit) ? ", " . BB_POSTS_TEXT . " pt, bb_users u" : '';
|
||||||
|
|
||||||
$where_sql = "
|
$where_sql = "
|
||||||
WHERE p.post_id = $post_id
|
WHERE p.post_id = $post_id
|
||||||
|
@ -162,7 +164,7 @@ switch ($mode) {
|
||||||
bb_simple_die($lang['NO_VALID_MODE']);
|
bb_simple_die($lang['NO_VALID_MODE']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($post_info = DB()->fetch_row($sql)) {
|
if ($post_info = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
$forum_id = $post_info['forum_id'];
|
$forum_id = $post_info['forum_id'];
|
||||||
$forum_name = $post_info['forum_name'];
|
$forum_name = $post_info['forum_name'];
|
||||||
|
|
||||||
|
@ -242,8 +244,8 @@ if (!$is_auth[$is_auth_type]) {
|
||||||
|
|
||||||
if ($mode == 'new_rel') {
|
if ($mode == 'new_rel') {
|
||||||
if ($tor_status = join(',', $di->config->get('tor_cannot_new'))) {
|
if ($tor_status = join(',', $di->config->get('tor_cannot_new'))) {
|
||||||
$sql = DB()->fetch_rowset("SELECT t.topic_title, t.topic_id, tor.tor_status
|
$sql = Di::getInstance()->db->fetch_rowset("SELECT t.topic_title, t.topic_id, tor.tor_status
|
||||||
FROM " . BB_BT_TORRENTS . " tor, " . BB_TOPICS . " t
|
FROM bb_bt_torrents tor, bb_topics t
|
||||||
WHERE poster_id = {$userdata['user_id']}
|
WHERE poster_id = {$userdata['user_id']}
|
||||||
AND tor.topic_id = t.topic_id
|
AND tor.topic_id = t.topic_id
|
||||||
AND tor.tor_status IN ($tor_status)
|
AND tor.tor_status IN ($tor_status)
|
||||||
|
@ -269,7 +271,7 @@ if ($submit || $preview) {
|
||||||
$notify_user = bf($userdata['user_opt'], 'user_opt', 'user_notify');
|
$notify_user = bf($userdata['user_opt'], 'user_opt', 'user_notify');
|
||||||
|
|
||||||
if (!IS_GUEST && $mode != 'newtopic' && !$notify_user) {
|
if (!IS_GUEST && $mode != 'newtopic' && !$notify_user) {
|
||||||
$notify_user = (int)DB()->fetch_row("SELECT topic_id FROM " . BB_TOPICS_WATCH . " WHERE topic_id = $topic_id AND user_id = " . $userdata['user_id']);
|
$notify_user = (int)Di::getInstance()->db->fetch_row("SELECT topic_id FROM " . BB_TOPICS_WATCH . " WHERE topic_id = $topic_id AND user_id = " . $userdata['user_id']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,7 +283,7 @@ $topic_has_new_posts = false;
|
||||||
if (!IS_GUEST && $mode != 'newtopic' && ($submit || $preview || $mode == 'quote' || $mode == 'reply') && isset($_COOKIE[COOKIE_TOPIC])) {
|
if (!IS_GUEST && $mode != 'newtopic' && ($submit || $preview || $mode == 'quote' || $mode == 'reply') && isset($_COOKIE[COOKIE_TOPIC])) {
|
||||||
if ($topic_last_read = max(intval($tracking_topics[$topic_id]), intval($tracking_forums[$forum_id]))) {
|
if ($topic_last_read = max(intval($tracking_topics[$topic_id]), intval($tracking_forums[$forum_id]))) {
|
||||||
$sql = "SELECT p.*, pt.post_text, u.username, u.user_rank
|
$sql = "SELECT p.*, pt.post_text, u.username, u.user_rank
|
||||||
FROM " . BB_POSTS . " p, " . BB_POSTS_TEXT . " pt, " . BB_USERS . " u
|
FROM " . BB_POSTS . " p, " . BB_POSTS_TEXT . " pt, bb_users u
|
||||||
WHERE p.topic_id = " . (int)$topic_id . "
|
WHERE p.topic_id = " . (int)$topic_id . "
|
||||||
AND u.user_id = p.poster_id
|
AND u.user_id = p.poster_id
|
||||||
AND pt.post_id = p.post_id
|
AND pt.post_id = p.post_id
|
||||||
|
@ -289,7 +291,7 @@ if (!IS_GUEST && $mode != 'newtopic' && ($submit || $preview || $mode == 'quote'
|
||||||
ORDER BY p.post_time
|
ORDER BY p.post_time
|
||||||
LIMIT " . $di->config->get('posts_per_page');
|
LIMIT " . $di->config->get('posts_per_page');
|
||||||
|
|
||||||
if ($rowset = DB()->fetch_rowset($sql)) {
|
if ($rowset = Di::getInstance()->db->fetch_rowset($sql)) {
|
||||||
$topic_has_new_posts = true;
|
$topic_has_new_posts = true;
|
||||||
|
|
||||||
foreach ($rowset as $i => $row) {
|
foreach ($rowset as $i => $row) {
|
||||||
|
@ -347,7 +349,7 @@ if ($mode == 'delete' && !$confirm) {
|
||||||
if (!$error_msg) {
|
if (!$error_msg) {
|
||||||
$topic_type = (isset($post_data['topic_type']) && $topic_type != $post_data['topic_type'] && !$is_auth['auth_sticky'] && !$is_auth['auth_announce']) ? $post_data['topic_type'] : $topic_type;
|
$topic_type = (isset($post_data['topic_type']) && $topic_type != $post_data['topic_type'] && !$is_auth['auth_sticky'] && !$is_auth['auth_announce']) ? $post_data['topic_type'] : $topic_type;
|
||||||
|
|
||||||
submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $topic_type, DB()->escape($username), DB()->escape($subject), DB()->escape($message), $update_post_time, $poster_rg_id, $attach_rg_sig);
|
submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $topic_type, Di::getInstance()->db->escape($username), Di::getInstance()->db->escape($subject), Di::getInstance()->db->escape($message), $update_post_time, $poster_rg_id, $attach_rg_sig);
|
||||||
|
|
||||||
$post_url = POST_URL . "$post_id#$post_id";
|
$post_url = POST_URL . "$post_id#$post_id";
|
||||||
$post_msg = ($mode == 'editpost') ? $lang['EDITED'] : $lang['STORED'];
|
$post_msg = ($mode == 'editpost') ? $lang['EDITED'] : $lang['STORED'];
|
||||||
|
@ -386,8 +388,8 @@ if ($mode == 'delete' && !$confirm) {
|
||||||
$upload = new upload_common();
|
$upload = new upload_common();
|
||||||
|
|
||||||
if ($upload->init($di->config->get('attach'), $_FILES['attach']) && $upload->store('attach', array('topic_id' => $topic_id))) {
|
if ($upload->init($di->config->get('attach'), $_FILES['attach']) && $upload->store('attach', array('topic_id' => $topic_id))) {
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
UPDATE " . BB_TOPICS . " SET
|
UPDATE bb_topics SET
|
||||||
attach_ext_id = " . (int)$upload->file_ext_id . ",
|
attach_ext_id = " . (int)$upload->file_ext_id . ",
|
||||||
filesize = " . (int)$upload->file_size . "
|
filesize = " . (int)$upload->file_size . "
|
||||||
WHERE topic_id = $topic_id
|
WHERE topic_id = $topic_id
|
||||||
|
@ -401,7 +403,7 @@ if ($mode == 'delete' && !$confirm) {
|
||||||
if ($post_info['forum_parent']) {
|
if ($post_info['forum_parent']) {
|
||||||
$forum_parent = $post_info['forum_parent'];
|
$forum_parent = $post_info['forum_parent'];
|
||||||
}
|
}
|
||||||
$count_rowset = DB()->fetch_rowset("SELECT forum_id FROM " . BB_FORUMS . " WHERE forum_parent = $forum_parent");
|
$count_rowset = Di::getInstance()->db->fetch_rowset("SELECT forum_id FROM bb_forums WHERE forum_parent = $forum_parent");
|
||||||
$sub_forums = array();
|
$sub_forums = array();
|
||||||
foreach ($count_rowset as $count_row) {
|
foreach ($count_rowset as $count_row) {
|
||||||
if ($count_row['forum_id'] != $forum_id) {
|
if ($count_row['forum_id'] != $forum_id) {
|
||||||
|
@ -411,7 +413,7 @@ if ($mode == 'delete' && !$confirm) {
|
||||||
$sub_forums[] = $forum_id;
|
$sub_forums[] = $forum_id;
|
||||||
$sub_forums = join(',', $sub_forums);
|
$sub_forums = join(',', $sub_forums);
|
||||||
// Подсчет проверенных релизов в форумах раздела
|
// Подсчет проверенных релизов в форумах раздела
|
||||||
$count_checked_releases = DB()->fetch_row("SELECT COUNT(*) AS checked_releases FROM " . BB_BT_TORRENTS . " WHERE poster_id = " . $userdata['user_id'] . " AND forum_id IN($sub_forums) AND tor_status IN(" . TOR_APPROVED . "," . TOR_DOUBTFUL . "," . TOR_TMP . ") LIMIT 1", 'checked_releases');
|
$count_checked_releases = Di::getInstance()->db->fetch_row("SELECT COUNT(*) AS checked_releases FROM bb_bt_torrents WHERE poster_id = " . $userdata['user_id'] . " AND forum_id IN($sub_forums) AND tor_status IN(" . TOR_APPROVED . "," . TOR_DOUBTFUL . "," . TOR_TMP . ") LIMIT 1", 'checked_releases');
|
||||||
if ($count_checked_releases || IS_AM) {
|
if ($count_checked_releases || IS_AM) {
|
||||||
tracker_register($topic_id, 'newtopic', TOR_NOT_APPROVED);
|
tracker_register($topic_id, 'newtopic', TOR_NOT_APPROVED);
|
||||||
} else {
|
} else {
|
||||||
|
@ -571,7 +573,7 @@ if ($userdata['user_level'] == GROUP_MEMBER || IS_AM) {
|
||||||
AND g.release_group = 1
|
AND g.release_group = 1
|
||||||
ORDER BY g.group_name";
|
ORDER BY g.group_name";
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$selected_opt = ($row['group_id'] == $selected_rg) ? 'selected' : '';
|
$selected_opt = ($row['group_id'] == $selected_rg) ? 'selected' : '';
|
||||||
$poster_rgroups .= '<option value="' . $row['group_id'] . '" ' . $selected_opt . '>' . $row['group_name'] . '</option>';
|
$poster_rgroups .= '<option value="' . $row['group_id'] . '" ' . $selected_opt . '>' . $row['group_name'] . '</option>';
|
||||||
}
|
}
|
||||||
|
|
168
privmsg.php
168
privmsg.php
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'pm');
|
define('BB_SCRIPT', 'pm');
|
||||||
define('IN_PM', true);
|
define('IN_PM', true);
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
|
@ -160,20 +162,20 @@ if ($mode == 'read') {
|
||||||
$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_email, u.user_regdate, u.user_rank,
|
$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_email, u.user_regdate, u.user_rank,
|
||||||
u2.username AS to_username, u2.user_id AS to_user_id, u2.user_rank as to_user_rank,
|
u2.username AS to_username, u2.user_id AS to_user_id, u2.user_rank as to_user_rank,
|
||||||
pm.*, pmt.privmsgs_text
|
pm.*, pmt.privmsgs_text
|
||||||
FROM " . BB_PRIVMSGS . " pm, " . BB_PRIVMSGS_TEXT . " pmt, " . BB_USERS . " u, " . BB_USERS . " u2
|
FROM " . BB_PRIVMSGS . " pm, " . BB_PRIVMSGS_TEXT . " pmt, bb_users u, bb_users u2
|
||||||
WHERE pm.privmsgs_id = $privmsgs_id
|
WHERE pm.privmsgs_id = $privmsgs_id
|
||||||
AND pmt.privmsgs_text_id = pm.privmsgs_id
|
AND pmt.privmsgs_text_id = pm.privmsgs_id
|
||||||
$pm_sql_user
|
$pm_sql_user
|
||||||
AND u.user_id = pm.privmsgs_from_userid
|
AND u.user_id = pm.privmsgs_from_userid
|
||||||
AND u2.user_id = pm.privmsgs_to_userid";
|
AND u2.user_id = pm.privmsgs_to_userid";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not query private message post information');
|
bb_die('Could not query private message post information');
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Did the query return any data?
|
// Did the query return any data?
|
||||||
//
|
//
|
||||||
if (!($privmsg = DB()->sql_fetchrow($result))) {
|
if (!($privmsg = Di::getInstance()->db->sql_fetchrow($result))) {
|
||||||
redirect(PM_URL . "?folder=$folder");
|
redirect(PM_URL . "?folder=$folder");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,18 +196,18 @@ if ($mode == 'read') {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "UPDATE " . BB_USERS . " SET $sql WHERE user_id = " . $userdata['user_id'];
|
$sql = "UPDATE bb_users SET $sql WHERE user_id = " . $userdata['user_id'];
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not update private message read status for user');
|
bb_die('Could not update private message read status for user');
|
||||||
}
|
}
|
||||||
if (DB()->affected_rows()) {
|
if (Di::getInstance()->db->affected_rows()) {
|
||||||
cache_rm_userdata($userdata);
|
cache_rm_userdata($userdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "UPDATE " . BB_PRIVMSGS . "
|
$sql = "UPDATE " . BB_PRIVMSGS . "
|
||||||
SET privmsgs_type = " . PRIVMSGS_READ_MAIL . "
|
SET privmsgs_type = " . PRIVMSGS_READ_MAIL . "
|
||||||
WHERE privmsgs_id = " . $privmsg['privmsgs_id'];
|
WHERE privmsgs_id = " . $privmsg['privmsgs_id'];
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not update private message read status');
|
bb_die('Could not update private message read status');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,29 +216,29 @@ if ($mode == 'read') {
|
||||||
FROM " . BB_PRIVMSGS . "
|
FROM " . BB_PRIVMSGS . "
|
||||||
WHERE privmsgs_type = " . PRIVMSGS_SENT_MAIL . "
|
WHERE privmsgs_type = " . PRIVMSGS_SENT_MAIL . "
|
||||||
AND privmsgs_from_userid = " . $privmsg['privmsgs_from_userid'];
|
AND privmsgs_from_userid = " . $privmsg['privmsgs_from_userid'];
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain sent message info for sender');
|
bb_die('Could not obtain sent message info for sender');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($sent_info = DB()->sql_fetchrow($result)) {
|
if ($sent_info = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
if ($di->config->get('max_sentbox_privmsgs') && $sent_info['sent_items'] >= $di->config->get('max_sentbox_privmsgs')) {
|
if ($di->config->get('max_sentbox_privmsgs') && $sent_info['sent_items'] >= $di->config->get('max_sentbox_privmsgs')) {
|
||||||
$sql = "SELECT privmsgs_id FROM " . BB_PRIVMSGS . "
|
$sql = "SELECT privmsgs_id FROM " . BB_PRIVMSGS . "
|
||||||
WHERE privmsgs_type = " . PRIVMSGS_SENT_MAIL . "
|
WHERE privmsgs_type = " . PRIVMSGS_SENT_MAIL . "
|
||||||
AND privmsgs_date = " . $sent_info['oldest_post_time'] . "
|
AND privmsgs_date = " . $sent_info['oldest_post_time'] . "
|
||||||
AND privmsgs_from_userid = " . $privmsg['privmsgs_from_userid'];
|
AND privmsgs_from_userid = " . $privmsg['privmsgs_from_userid'];
|
||||||
if (!$result = DB()->sql_query($sql)) {
|
if (!$result = Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not find oldest privmsgs');
|
bb_die('Could not find oldest privmsgs');
|
||||||
}
|
}
|
||||||
$old_privmsgs_id = DB()->sql_fetchrow($result);
|
$old_privmsgs_id = Di::getInstance()->db->sql_fetchrow($result);
|
||||||
$old_privmsgs_id = (int)$old_privmsgs_id['privmsgs_id'];
|
$old_privmsgs_id = (int)$old_privmsgs_id['privmsgs_id'];
|
||||||
|
|
||||||
$sql = "DELETE FROM " . BB_PRIVMSGS . " WHERE privmsgs_id = $old_privmsgs_id";
|
$sql = "DELETE FROM " . BB_PRIVMSGS . " WHERE privmsgs_id = $old_privmsgs_id";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not delete oldest privmsgs (sent)');
|
bb_die('Could not delete oldest privmsgs (sent)');
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "DELETE FROM " . BB_PRIVMSGS_TEXT . " WHERE privmsgs_text_id = $old_privmsgs_id";
|
$sql = "DELETE FROM " . BB_PRIVMSGS_TEXT . " WHERE privmsgs_text_id = $old_privmsgs_id";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not delete oldest privmsgs text (sent)');
|
bb_die('Could not delete oldest privmsgs text (sent)');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -248,16 +250,16 @@ if ($mode == 'read') {
|
||||||
// set limits on numbers of storable posts for users ... hopefully!
|
// set limits on numbers of storable posts for users ... hopefully!
|
||||||
//
|
//
|
||||||
$sql = "INSERT INTO " . BB_PRIVMSGS . " (privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip)
|
$sql = "INSERT INTO " . BB_PRIVMSGS . " (privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip)
|
||||||
VALUES (" . PRIVMSGS_SENT_MAIL . ", '" . DB()->escape($privmsg['privmsgs_subject']) . "', " . $privmsg['privmsgs_from_userid'] . ", " . $privmsg['privmsgs_to_userid'] . ", " . $privmsg['privmsgs_date'] . ", '" . $privmsg['privmsgs_ip'] . "')";
|
VALUES (" . PRIVMSGS_SENT_MAIL . ", '" . Di::getInstance()->db->escape($privmsg['privmsgs_subject']) . "', " . $privmsg['privmsgs_from_userid'] . ", " . $privmsg['privmsgs_to_userid'] . ", " . $privmsg['privmsgs_date'] . ", '" . $privmsg['privmsgs_ip'] . "')";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not insert private message sent info');
|
bb_die('Could not insert private message sent info');
|
||||||
}
|
}
|
||||||
|
|
||||||
$privmsg_sent_id = DB()->sql_nextid();
|
$privmsg_sent_id = Di::getInstance()->db->sql_nextid();
|
||||||
|
|
||||||
$sql = "INSERT INTO " . BB_PRIVMSGS_TEXT . " (privmsgs_text_id, privmsgs_text)
|
$sql = "INSERT INTO " . BB_PRIVMSGS_TEXT . " (privmsgs_text_id, privmsgs_text)
|
||||||
VALUES ($privmsg_sent_id, '" . DB()->escape($privmsg['privmsgs_text']) . "')";
|
VALUES ($privmsg_sent_id, '" . Di::getInstance()->db->escape($privmsg['privmsgs_text']) . "')";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not insert private message sent text');
|
bb_die('Could not insert private message sent text');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -482,12 +484,12 @@ if ($mode == 'read') {
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT privmsgs_id FROM " . BB_PRIVMSGS . " WHERE $delete_type $delete_sql_id";
|
$sql = "SELECT privmsgs_id FROM " . BB_PRIVMSGS . " WHERE $delete_type $delete_sql_id";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain id list to delete messages');
|
bb_die('Could not obtain id list to delete messages');
|
||||||
}
|
}
|
||||||
|
|
||||||
$mark_list = array();
|
$mark_list = array();
|
||||||
while ($row = DB()->sql_fetchrow($result)) {
|
while ($row = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
$mark_list[] = $row['privmsgs_id'];
|
$mark_list[] = $row['privmsgs_id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -516,11 +518,11 @@ if ($mode == 'read') {
|
||||||
WHERE privmsgs_id IN ($delete_sql_id)
|
WHERE privmsgs_id IN ($delete_sql_id)
|
||||||
AND $sql
|
AND $sql
|
||||||
AND privmsgs_type IN (" . PRIVMSGS_NEW_MAIL . ", " . PRIVMSGS_UNREAD_MAIL . ")";
|
AND privmsgs_type IN (" . PRIVMSGS_NEW_MAIL . ", " . PRIVMSGS_UNREAD_MAIL . ")";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain user id list for outbox messages');
|
bb_die('Could not obtain user id list for outbox messages');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row = DB()->sql_fetchrow($result)) {
|
if ($row = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
$update_users = $update_list = array();
|
$update_users = $update_list = array();
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -533,7 +535,7 @@ if ($mode == 'read') {
|
||||||
$update_users['unread'][$row['privmsgs_to_userid']]++;
|
$update_users['unread'][$row['privmsgs_to_userid']]++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while ($row = DB()->sql_fetchrow($result));
|
} while ($row = Di::getInstance()->db->sql_fetchrow($result));
|
||||||
|
|
||||||
if (sizeof($update_users)) {
|
if (sizeof($update_users)) {
|
||||||
while (list($type, $users) = each($update_users)) {
|
while (list($type, $users) = each($update_users)) {
|
||||||
|
@ -557,10 +559,10 @@ if ($mode == 'read') {
|
||||||
while (list($dec, $user_ary) = each($dec_ary)) {
|
while (list($dec, $user_ary) = each($dec_ary)) {
|
||||||
$user_ids = join(', ', $user_ary);
|
$user_ids = join(', ', $user_ary);
|
||||||
|
|
||||||
$sql = "UPDATE " . BB_USERS . "
|
$sql = "UPDATE bb_users
|
||||||
SET $type = $type - $dec
|
SET $type = $type - $dec
|
||||||
WHERE user_id IN ($user_ids)";
|
WHERE user_id IN ($user_ids)";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not update user pm counters');
|
bb_die('Could not update user pm counters');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -568,7 +570,7 @@ if ($mode == 'read') {
|
||||||
unset($update_list);
|
unset($update_list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DB()->sql_freeresult($result);
|
Di::getInstance()->db->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete the messages
|
// Delete the messages
|
||||||
|
@ -601,11 +603,11 @@ if ($mode == 'read') {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!DB()->sql_query($delete_sql)) {
|
if (!Di::getInstance()->db->sql_query($delete_sql)) {
|
||||||
bb_die('Could not delete private message info');
|
bb_die('Could not delete private message info');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!DB()->sql_query($delete_text_sql)) {
|
if (!Di::getInstance()->db->sql_query($delete_text_sql)) {
|
||||||
bb_die('Could not delete private message text');
|
bb_die('Could not delete private message text');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -623,11 +625,11 @@ if ($mode == 'read') {
|
||||||
AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " )
|
AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " )
|
||||||
OR ( privmsgs_from_userid = " . $userdata['user_id'] . "
|
OR ( privmsgs_from_userid = " . $userdata['user_id'] . "
|
||||||
AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . ") )";
|
AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . ") )";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain sent message info for sender');
|
bb_die('Could not obtain sent message info for sender');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($saved_info = DB()->sql_fetchrow($result)) {
|
if ($saved_info = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
if ($di->config->get('max_savebox_privmsgs') && $saved_info['savebox_items'] >= $di->config->get('max_savebox_privmsgs')) {
|
if ($di->config->get('max_savebox_privmsgs') && $saved_info['savebox_items'] >= $di->config->get('max_savebox_privmsgs')) {
|
||||||
$sql = "SELECT privmsgs_id FROM " . BB_PRIVMSGS . "
|
$sql = "SELECT privmsgs_id FROM " . BB_PRIVMSGS . "
|
||||||
WHERE ( ( privmsgs_to_userid = " . $userdata['user_id'] . "
|
WHERE ( ( privmsgs_to_userid = " . $userdata['user_id'] . "
|
||||||
|
@ -635,19 +637,19 @@ if ($mode == 'read') {
|
||||||
OR ( privmsgs_from_userid = " . $userdata['user_id'] . "
|
OR ( privmsgs_from_userid = " . $userdata['user_id'] . "
|
||||||
AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . ") )
|
AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . ") )
|
||||||
AND privmsgs_date = " . $saved_info['oldest_post_time'];
|
AND privmsgs_date = " . $saved_info['oldest_post_time'];
|
||||||
if (!$result = DB()->sql_query($sql)) {
|
if (!$result = Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not find oldest privmsgs (save)');
|
bb_die('Could not find oldest privmsgs (save)');
|
||||||
}
|
}
|
||||||
$old_privmsgs_id = DB()->sql_fetchrow($result);
|
$old_privmsgs_id = Di::getInstance()->db->sql_fetchrow($result);
|
||||||
$old_privmsgs_id = (int)$old_privmsgs_id['privmsgs_id'];
|
$old_privmsgs_id = (int)$old_privmsgs_id['privmsgs_id'];
|
||||||
|
|
||||||
$sql = "DELETE FROM " . BB_PRIVMSGS . " WHERE privmsgs_id = $old_privmsgs_id";
|
$sql = "DELETE FROM " . BB_PRIVMSGS . " WHERE privmsgs_id = $old_privmsgs_id";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not delete oldest privmsgs (save)');
|
bb_die('Could not delete oldest privmsgs (save)');
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "DELETE FROM " . BB_PRIVMSGS_TEXT . " WHERE privmsgs_text_id = $old_privmsgs_id";
|
$sql = "DELETE FROM " . BB_PRIVMSGS_TEXT . " WHERE privmsgs_text_id = $old_privmsgs_id";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not delete oldest privmsgs text (save)');
|
bb_die('Could not delete oldest privmsgs text (save)');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -679,11 +681,11 @@ if ($mode == 'read') {
|
||||||
WHERE privmsgs_id IN ($saved_sql_id)
|
WHERE privmsgs_id IN ($saved_sql_id)
|
||||||
AND $sql
|
AND $sql
|
||||||
AND privmsgs_type IN (" . PRIVMSGS_NEW_MAIL . ", " . PRIVMSGS_UNREAD_MAIL . ")";
|
AND privmsgs_type IN (" . PRIVMSGS_NEW_MAIL . ", " . PRIVMSGS_UNREAD_MAIL . ")";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain user id list for outbox messages');
|
bb_die('Could not obtain user id list for outbox messages');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row = DB()->sql_fetchrow($result)) {
|
if ($row = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
$update_users = $update_list = array();
|
$update_users = $update_list = array();
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -696,7 +698,7 @@ if ($mode == 'read') {
|
||||||
$update_users['unread'][$row['privmsgs_to_userid']]++;
|
$update_users['unread'][$row['privmsgs_to_userid']]++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while ($row = DB()->sql_fetchrow($result));
|
} while ($row = Di::getInstance()->db->sql_fetchrow($result));
|
||||||
|
|
||||||
if (sizeof($update_users)) {
|
if (sizeof($update_users)) {
|
||||||
while (list($type, $users) = each($update_users)) {
|
while (list($type, $users) = each($update_users)) {
|
||||||
|
@ -720,8 +722,8 @@ if ($mode == 'read') {
|
||||||
while (list($dec, $user_ary) = each($dec_ary)) {
|
while (list($dec, $user_ary) = each($dec_ary)) {
|
||||||
$user_ids = join(', ', $user_ary);
|
$user_ids = join(', ', $user_ary);
|
||||||
|
|
||||||
$sql = "UPDATE " . BB_USERS . " SET $type = $type - $dec WHERE user_id IN ($user_ids)";
|
$sql = "UPDATE bb_users SET $type = $type - $dec WHERE user_id IN ($user_ids)";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not update user pm counters');
|
bb_die('Could not update user pm counters');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -729,7 +731,7 @@ if ($mode == 'read') {
|
||||||
unset($update_list);
|
unset($update_list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DB()->sql_freeresult($result);
|
Di::getInstance()->db->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($folder) {
|
switch ($folder) {
|
||||||
|
@ -757,7 +759,7 @@ if ($mode == 'read') {
|
||||||
|
|
||||||
$saved_sql .= " AND privmsgs_id IN ($saved_sql_id)";
|
$saved_sql .= " AND privmsgs_id IN ($saved_sql_id)";
|
||||||
|
|
||||||
if (!DB()->sql_query($saved_sql)) {
|
if (!Di::getInstance()->db->sql_query($saved_sql)) {
|
||||||
bb_die('Could not save private messages');
|
bb_die('Could not save private messages');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -767,8 +769,8 @@ if ($mode == 'read') {
|
||||||
if (IS_USER && $submit && $mode != 'edit') {
|
if (IS_USER && $submit && $mode != 'edit') {
|
||||||
// Flood control
|
// Flood control
|
||||||
$sql = "SELECT MAX(privmsgs_date) AS last_post_time FROM " . BB_PRIVMSGS . " WHERE privmsgs_from_userid = " . $userdata['user_id'];
|
$sql = "SELECT MAX(privmsgs_date) AS last_post_time FROM " . BB_PRIVMSGS . " WHERE privmsgs_from_userid = " . $userdata['user_id'];
|
||||||
if ($result = DB()->sql_query($sql)) {
|
if ($result = Di::getInstance()->db->sql_query($sql)) {
|
||||||
$db_row = DB()->sql_fetchrow($result);
|
$db_row = Di::getInstance()->db->sql_fetchrow($result);
|
||||||
|
|
||||||
$last_post_time = $db_row['last_post_time'];
|
$last_post_time = $db_row['last_post_time'];
|
||||||
$current_time = TIMENOW;
|
$current_time = TIMENOW;
|
||||||
|
@ -785,14 +787,14 @@ if ($mode == 'read') {
|
||||||
WHERE privmsgs_id = ' . (int)$privmsg_id . '
|
WHERE privmsgs_id = ' . (int)$privmsg_id . '
|
||||||
AND privmsgs_from_userid = ' . $userdata['user_id'];
|
AND privmsgs_from_userid = ' . $userdata['user_id'];
|
||||||
|
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain message details');
|
bb_die('Could not obtain message details');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!($row = DB()->sql_fetchrow($result))) {
|
if (!($row = Di::getInstance()->db->sql_fetchrow($result))) {
|
||||||
bb_die($lang['NO_SUCH_POST']);
|
bb_die($lang['NO_SUCH_POST']);
|
||||||
}
|
}
|
||||||
DB()->sql_freeresult($result);
|
Di::getInstance()->db->sql_freeresult($result);
|
||||||
|
|
||||||
unset($row);
|
unset($row);
|
||||||
}
|
}
|
||||||
|
@ -800,7 +802,7 @@ if ($mode == 'read') {
|
||||||
if ($submit) {
|
if ($submit) {
|
||||||
if (!empty($_POST['username'])) {
|
if (!empty($_POST['username'])) {
|
||||||
$to_username = clean_username($_POST['username']);
|
$to_username = clean_username($_POST['username']);
|
||||||
$to_username_sql = DB()->escape($to_username);
|
$to_username_sql = Di::getInstance()->db->escape($to_username);
|
||||||
$to_userdata = get_userdata($to_username_sql);
|
$to_userdata = get_userdata($to_username_sql);
|
||||||
|
|
||||||
if (!$to_userdata || $to_userdata['user_id'] == GUEST_UID) {
|
if (!$to_userdata || $to_userdata['user_id'] == GUEST_UID) {
|
||||||
|
@ -846,11 +848,11 @@ if ($mode == 'read') {
|
||||||
OR privmsgs_type = " . PRIVMSGS_READ_MAIL . "
|
OR privmsgs_type = " . PRIVMSGS_READ_MAIL . "
|
||||||
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
|
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
|
||||||
AND privmsgs_to_userid = " . $to_userdata['user_id'];
|
AND privmsgs_to_userid = " . $to_userdata['user_id'];
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die($lang['NO_SUCH_USER']);
|
bb_die($lang['NO_SUCH_USER']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($inbox_info = DB()->sql_fetchrow($result)) {
|
if ($inbox_info = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
if ($di->config->get('max_inbox_privmsgs') && $inbox_info['inbox_items'] >= $di->config->get('max_inbox_privmsgs')) {
|
if ($di->config->get('max_inbox_privmsgs') && $inbox_info['inbox_items'] >= $di->config->get('max_inbox_privmsgs')) {
|
||||||
$sql = "SELECT privmsgs_id FROM " . BB_PRIVMSGS . "
|
$sql = "SELECT privmsgs_id FROM " . BB_PRIVMSGS . "
|
||||||
WHERE ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
|
WHERE ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
|
||||||
|
@ -858,62 +860,62 @@ if ($mode == 'read') {
|
||||||
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
|
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
|
||||||
AND privmsgs_date = " . $inbox_info['oldest_post_time'] . "
|
AND privmsgs_date = " . $inbox_info['oldest_post_time'] . "
|
||||||
AND privmsgs_to_userid = " . $to_userdata['user_id'];
|
AND privmsgs_to_userid = " . $to_userdata['user_id'];
|
||||||
if (!$result = DB()->sql_query($sql)) {
|
if (!$result = Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not find oldest privmsgs (inbox)');
|
bb_die('Could not find oldest privmsgs (inbox)');
|
||||||
}
|
}
|
||||||
$old_privmsgs_id = DB()->sql_fetchrow($result);
|
$old_privmsgs_id = Di::getInstance()->db->sql_fetchrow($result);
|
||||||
$old_privmsgs_id = (int)$old_privmsgs_id['privmsgs_id'];
|
$old_privmsgs_id = (int)$old_privmsgs_id['privmsgs_id'];
|
||||||
|
|
||||||
$sql = "DELETE FROM " . BB_PRIVMSGS . " WHERE privmsgs_id = $old_privmsgs_id";
|
$sql = "DELETE FROM " . BB_PRIVMSGS . " WHERE privmsgs_id = $old_privmsgs_id";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not delete oldest privmsgs (inbox)');
|
bb_die('Could not delete oldest privmsgs (inbox)');
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "DELETE FROM " . BB_PRIVMSGS_TEXT . " WHERE privmsgs_text_id = $old_privmsgs_id";
|
$sql = "DELETE FROM " . BB_PRIVMSGS_TEXT . " WHERE privmsgs_text_id = $old_privmsgs_id";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not delete oldest privmsgs text (inbox)');
|
bb_die('Could not delete oldest privmsgs text (inbox)');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_info = "INSERT INTO " . BB_PRIVMSGS . " (privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip)
|
$sql_info = "INSERT INTO " . BB_PRIVMSGS . " (privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip)
|
||||||
VALUES (" . PRIVMSGS_NEW_MAIL . ", '" . DB()->escape($privmsg_subject) . "', " . $userdata['user_id'] . ", " . $to_userdata['user_id'] . ", $msg_time, '" . USER_IP . "')";
|
VALUES (" . PRIVMSGS_NEW_MAIL . ", '" . Di::getInstance()->db->escape($privmsg_subject) . "', " . $userdata['user_id'] . ", " . $to_userdata['user_id'] . ", $msg_time, '" . USER_IP . "')";
|
||||||
} else {
|
} else {
|
||||||
$sql_info = "UPDATE " . BB_PRIVMSGS . "
|
$sql_info = "UPDATE " . BB_PRIVMSGS . "
|
||||||
SET privmsgs_type = " . PRIVMSGS_NEW_MAIL . ", privmsgs_subject = '" . DB()->escape($privmsg_subject) . "', privmsgs_from_userid = " . $userdata['user_id'] . ", privmsgs_to_userid = " . $to_userdata['user_id'] . ", privmsgs_date = $msg_time, privmsgs_ip = '" . USER_IP . "'
|
SET privmsgs_type = " . PRIVMSGS_NEW_MAIL . ", privmsgs_subject = '" . Di::getInstance()->db->escape($privmsg_subject) . "', privmsgs_from_userid = " . $userdata['user_id'] . ", privmsgs_to_userid = " . $to_userdata['user_id'] . ", privmsgs_date = $msg_time, privmsgs_ip = '" . USER_IP . "'
|
||||||
WHERE privmsgs_id = $privmsg_id";
|
WHERE privmsgs_id = $privmsg_id";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!($result = DB()->sql_query($sql_info))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql_info))) {
|
||||||
bb_die('Could not insert / update private message sent info');
|
bb_die('Could not insert / update private message sent info');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mode != 'edit') {
|
if ($mode != 'edit') {
|
||||||
$privmsg_sent_id = DB()->sql_nextid();
|
$privmsg_sent_id = Di::getInstance()->db->sql_nextid();
|
||||||
|
|
||||||
$sql = "INSERT INTO " . BB_PRIVMSGS_TEXT . " (privmsgs_text_id, privmsgs_text)
|
$sql = "INSERT INTO " . BB_PRIVMSGS_TEXT . " (privmsgs_text_id, privmsgs_text)
|
||||||
VALUES ($privmsg_sent_id, '" . DB()->escape($privmsg_message) . "')";
|
VALUES ($privmsg_sent_id, '" . Di::getInstance()->db->escape($privmsg_message) . "')";
|
||||||
} else {
|
} else {
|
||||||
$sql = "UPDATE " . BB_PRIVMSGS_TEXT . "
|
$sql = "UPDATE " . BB_PRIVMSGS_TEXT . "
|
||||||
SET privmsgs_text = '" . DB()->escape($privmsg_message) . "'
|
SET privmsgs_text = '" . Di::getInstance()->db->escape($privmsg_message) . "'
|
||||||
WHERE privmsgs_text_id = $privmsg_id";
|
WHERE privmsgs_text_id = $privmsg_id";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not insert / update private message sent text');
|
bb_die('Could not insert / update private message sent text');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mode != 'edit') {
|
if ($mode != 'edit') {
|
||||||
$timenow = TIMENOW;
|
$timenow = TIMENOW;
|
||||||
// Add to the users new pm counter
|
// Add to the users new pm counter
|
||||||
$sql = "UPDATE " . BB_USERS . " SET
|
$sql = "UPDATE bb_users SET
|
||||||
user_new_privmsg = user_new_privmsg + 1,
|
user_new_privmsg = user_new_privmsg + 1,
|
||||||
user_last_privmsg = $timenow,
|
user_last_privmsg = $timenow,
|
||||||
user_newest_pm_id = $privmsg_sent_id
|
user_newest_pm_id = $privmsg_sent_id
|
||||||
WHERE user_id = {$to_userdata['user_id']}
|
WHERE user_id = {$to_userdata['user_id']}
|
||||||
LIMIT 1";
|
LIMIT 1";
|
||||||
|
|
||||||
if (!$status = DB()->sql_query($sql)) {
|
if (!$status = Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not update private message new / read status for user');
|
bb_die('Could not update private message new / read status for user');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -964,14 +966,14 @@ if ($mode == 'read') {
|
||||||
$page_title = $lang['EDIT_PM'];
|
$page_title = $lang['EDIT_PM'];
|
||||||
|
|
||||||
$sql = "SELECT u.user_id
|
$sql = "SELECT u.user_id
|
||||||
FROM " . BB_PRIVMSGS . " pm, " . BB_USERS . " u
|
FROM " . BB_PRIVMSGS . " pm, bb_users u
|
||||||
WHERE pm.privmsgs_id = $privmsg_id
|
WHERE pm.privmsgs_id = $privmsg_id
|
||||||
AND u.user_id = pm.privmsgs_from_userid";
|
AND u.user_id = pm.privmsgs_from_userid";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain post and post text');
|
bb_die('Could not obtain post and post text');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($postrow = DB()->sql_fetchrow($result)) {
|
if ($postrow = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
if ($userdata['user_id'] != $postrow['user_id']) {
|
if ($userdata['user_id'] != $postrow['user_id']) {
|
||||||
bb_die($lang['EDIT_OWN_POSTS']);
|
bb_die($lang['EDIT_OWN_POSTS']);
|
||||||
}
|
}
|
||||||
|
@ -985,29 +987,29 @@ if ($mode == 'read') {
|
||||||
if (!empty($_GET[POST_USERS_URL])) {
|
if (!empty($_GET[POST_USERS_URL])) {
|
||||||
$user_id = intval($_GET[POST_USERS_URL]);
|
$user_id = intval($_GET[POST_USERS_URL]);
|
||||||
|
|
||||||
$sql = "SELECT username FROM " . BB_USERS . " WHERE user_id = $user_id AND user_id <> " . GUEST_UID;
|
$sql = "SELECT username FROM bb_users WHERE user_id = $user_id AND user_id <> " . GUEST_UID;
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
$error = true;
|
$error = true;
|
||||||
$error_msg = $lang['NO_SUCH_USER'];
|
$error_msg = $lang['NO_SUCH_USER'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row = DB()->sql_fetchrow($result)) {
|
if ($row = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
$to_username = $row['username'];
|
$to_username = $row['username'];
|
||||||
}
|
}
|
||||||
} elseif ($mode == 'edit') {
|
} elseif ($mode == 'edit') {
|
||||||
$sql = "SELECT pm.*, pmt.privmsgs_text, u.username, u.user_id
|
$sql = "SELECT pm.*, pmt.privmsgs_text, u.username, u.user_id
|
||||||
FROM " . BB_PRIVMSGS . " pm, " . BB_PRIVMSGS_TEXT . " pmt, " . BB_USERS . " u
|
FROM " . BB_PRIVMSGS . " pm, " . BB_PRIVMSGS_TEXT . " pmt, bb_users u
|
||||||
WHERE pm.privmsgs_id = $privmsg_id
|
WHERE pm.privmsgs_id = $privmsg_id
|
||||||
AND pmt.privmsgs_text_id = pm.privmsgs_id
|
AND pmt.privmsgs_text_id = pm.privmsgs_id
|
||||||
AND pm.privmsgs_from_userid = " . $userdata['user_id'] . "
|
AND pm.privmsgs_from_userid = " . $userdata['user_id'] . "
|
||||||
AND ( pm.privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
|
AND ( pm.privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
|
||||||
OR pm.privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
|
OR pm.privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )
|
||||||
AND u.user_id = pm.privmsgs_to_userid";
|
AND u.user_id = pm.privmsgs_to_userid";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain private message for editing #1');
|
bb_die('Could not obtain private message for editing #1');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!($privmsg = DB()->sql_fetchrow($result))) {
|
if (!($privmsg = Di::getInstance()->db->sql_fetchrow($result))) {
|
||||||
redirect(PM_URL . "?folder=$folder");
|
redirect(PM_URL . "?folder=$folder");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1018,16 +1020,16 @@ if ($mode == 'read') {
|
||||||
$to_userid = $privmsg['user_id'];
|
$to_userid = $privmsg['user_id'];
|
||||||
} elseif ($mode == 'reply' || $mode == 'quote') {
|
} elseif ($mode == 'reply' || $mode == 'quote') {
|
||||||
$sql = "SELECT pm.privmsgs_subject, pm.privmsgs_date, pmt.privmsgs_text, u.username, u.user_id
|
$sql = "SELECT pm.privmsgs_subject, pm.privmsgs_date, pmt.privmsgs_text, u.username, u.user_id
|
||||||
FROM " . BB_PRIVMSGS . " pm, " . BB_PRIVMSGS_TEXT . " pmt, " . BB_USERS . " u
|
FROM " . BB_PRIVMSGS . " pm, " . BB_PRIVMSGS_TEXT . " pmt, bb_users u
|
||||||
WHERE pm.privmsgs_id = $privmsg_id
|
WHERE pm.privmsgs_id = $privmsg_id
|
||||||
AND pmt.privmsgs_text_id = pm.privmsgs_id
|
AND pmt.privmsgs_text_id = pm.privmsgs_id
|
||||||
AND pm.privmsgs_to_userid = " . $userdata['user_id'] . "
|
AND pm.privmsgs_to_userid = " . $userdata['user_id'] . "
|
||||||
AND u.user_id = pm.privmsgs_from_userid";
|
AND u.user_id = pm.privmsgs_from_userid";
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not obtain private message for editing #2');
|
bb_die('Could not obtain private message for editing #2');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!($privmsg = DB()->sql_fetchrow($result))) {
|
if (!($privmsg = Di::getInstance()->db->sql_fetchrow($result))) {
|
||||||
redirect(PM_URL . "?folder=$folder");
|
redirect(PM_URL . "?folder=$folder");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1181,7 +1183,7 @@ if ($mode == 'read') {
|
||||||
SET privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . "
|
SET privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . "
|
||||||
WHERE privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
|
WHERE privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
|
||||||
AND privmsgs_to_userid = " . $userdata['user_id'];
|
AND privmsgs_to_userid = " . $userdata['user_id'];
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not update private message new / read status (2) for user');
|
bb_die('Could not update private message new / read status (2) for user');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1211,7 +1213,7 @@ if ($mode == 'read') {
|
||||||
$sql_tot = "SELECT COUNT(privmsgs_id) AS total
|
$sql_tot = "SELECT COUNT(privmsgs_id) AS total
|
||||||
FROM " . BB_PRIVMSGS . " ";
|
FROM " . BB_PRIVMSGS . " ";
|
||||||
$sql = "SELECT pm.privmsgs_type, pm.privmsgs_id, pm.privmsgs_date, pm.privmsgs_subject, u.user_id, u.username, u.user_rank
|
$sql = "SELECT pm.privmsgs_type, pm.privmsgs_id, pm.privmsgs_date, pm.privmsgs_subject, u.user_id, u.username, u.user_rank
|
||||||
FROM " . BB_PRIVMSGS . " pm, " . BB_USERS . " u ";
|
FROM " . BB_PRIVMSGS . " pm, bb_users u ";
|
||||||
switch ($folder) {
|
switch ($folder) {
|
||||||
case 'inbox':
|
case 'inbox':
|
||||||
$sql_tot .= "WHERE privmsgs_to_userid = " . $userdata['user_id'] . "
|
$sql_tot .= "WHERE privmsgs_to_userid = " . $userdata['user_id'] . "
|
||||||
|
@ -1289,17 +1291,17 @@ if ($mode == 'read') {
|
||||||
//
|
//
|
||||||
// Get messages
|
// Get messages
|
||||||
//
|
//
|
||||||
if (!($result = DB()->sql_query($sql_tot))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql_tot))) {
|
||||||
bb_die('Could not query private message information #1');
|
bb_die('Could not query private message information #1');
|
||||||
}
|
}
|
||||||
|
|
||||||
$pm_total = ($row = DB()->sql_fetchrow($result)) ? $row['total'] : 0;
|
$pm_total = ($row = Di::getInstance()->db->sql_fetchrow($result)) ? $row['total'] : 0;
|
||||||
|
|
||||||
if (!($result = DB()->sql_query($sql_all_tot))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql_all_tot))) {
|
||||||
bb_die('Could not query private message information #2');
|
bb_die('Could not query private message information #2');
|
||||||
}
|
}
|
||||||
|
|
||||||
$pm_all_total = ($row = DB()->sql_fetchrow($result)) ? $row['total'] : 0;
|
$pm_all_total = ($row = Di::getInstance()->db->sql_fetchrow($result)) ? $row['total'] : 0;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Build select box
|
// Build select box
|
||||||
|
@ -1395,11 +1397,11 @@ if ($mode == 'read') {
|
||||||
//
|
//
|
||||||
// Okay, let's build the correct folder
|
// Okay, let's build the correct folder
|
||||||
//
|
//
|
||||||
if (!($result = DB()->sql_query($sql))) {
|
if (!($result = Di::getInstance()->db->sql_query($sql))) {
|
||||||
bb_die('Could not query private messages');
|
bb_die('Could not query private messages');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($row = DB()->sql_fetchrow($result)) {
|
if ($row = Di::getInstance()->db->sql_fetchrow($result)) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
do {
|
do {
|
||||||
$privmsg_id = $row['privmsgs_id'];
|
$privmsg_id = $row['privmsgs_id'];
|
||||||
|
@ -1445,7 +1447,7 @@ if ($mode == 'read') {
|
||||||
|
|
||||||
'U_READ' => $u_subject,
|
'U_READ' => $u_subject,
|
||||||
));
|
));
|
||||||
} while ($row = DB()->sql_fetchrow($result));
|
} while ($row = Di::getInstance()->db->sql_fetchrow($result));
|
||||||
|
|
||||||
generate_pagination(PM_URL . "?folder=$folder", $pm_total, $di->config->get('topics_per_page'), $start);
|
generate_pagination(PM_URL . "?folder=$folder", $pm_total, $di->config->get('topics_per_page'), $start);
|
||||||
} else {
|
} else {
|
||||||
|
|
36
search.php
36
search.php
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'search');
|
define('BB_SCRIPT', 'search');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require(BB_ROOT . 'common.php');
|
require(BB_ROOT . 'common.php');
|
||||||
|
@ -53,9 +55,9 @@ if (isset($_POST['del_my_post'])) {
|
||||||
bb_die($lang['NONE_SELECTED']);
|
bb_die($lang['NONE_SELECTED']);
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("UPDATE " . BB_POSTS . " SET user_post = 0 WHERE poster_id = {$user->id} AND topic_id IN($topic_csv)");
|
Di::getInstance()->db->query("UPDATE " . BB_POSTS . " SET user_post = 0 WHERE poster_id = {$user->id} AND topic_id IN($topic_csv)");
|
||||||
|
|
||||||
if (DB()->affected_rows()) {
|
if (Di::getInstance()->db->affected_rows()) {
|
||||||
//bb_die('Выбранные темы ['. count($_POST['topic_id_list']) .' шт.] удалены из списка "Мои сообщения"');
|
//bb_die('Выбранные темы ['. count($_POST['topic_id_list']) .' шт.] удалены из списка "Мои сообщения"');
|
||||||
bb_die($lang['DEL_MY_MESSAGE']);
|
bb_die($lang['DEL_MY_MESSAGE']);
|
||||||
} else {
|
} else {
|
||||||
|
@ -72,7 +74,7 @@ if (isset($_POST['del_my_post'])) {
|
||||||
redirect('index.php');
|
redirect('index.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
DB()->query("UPDATE " . BB_POSTS . " SET user_post = 1 WHERE poster_id = {$user->id}");
|
Di::getInstance()->db->query("UPDATE " . BB_POSTS . " SET user_post = 1 WHERE poster_id = {$user->id}");
|
||||||
|
|
||||||
redirect("search.php?u={$user->id}");
|
redirect("search.php?u={$user->id}");
|
||||||
}
|
}
|
||||||
|
@ -121,7 +123,7 @@ $forums_tbl = BB_FORUMS . ' f';
|
||||||
$posts_tbl = BB_POSTS . ' p';
|
$posts_tbl = BB_POSTS . ' p';
|
||||||
$posts_text_tbl = BB_POSTS_TEXT . ' pt';
|
$posts_text_tbl = BB_POSTS_TEXT . ' pt';
|
||||||
$posts_html_tbl = BB_POSTS_HTML . ' h';
|
$posts_html_tbl = BB_POSTS_HTML . ' h';
|
||||||
$tr_snap_tbl = BB_BT_TRACKER_SNAP . ' sn';
|
$tr_snap_tbl = 'bb_bt_tracker_snap sn';
|
||||||
$topics_tbl = BB_TOPICS . ' t';
|
$topics_tbl = BB_TOPICS . ' t';
|
||||||
$torrents_tbl = BB_BT_TORRENTS . ' tor';
|
$torrents_tbl = BB_BT_TORRENTS . ' tor';
|
||||||
$tracker_tbl = BB_BT_TRACKER . ' tr';
|
$tracker_tbl = BB_BT_TRACKER . ' tr';
|
||||||
|
@ -338,7 +340,7 @@ $datastore->rm('cat_forums');
|
||||||
|
|
||||||
// Restore previously found items list and search settings if we have valid $search_id
|
// Restore previously found items list and search settings if we have valid $search_id
|
||||||
if ($search_id) {
|
if ($search_id) {
|
||||||
$row = DB()->fetch_row("
|
$row = Di::getInstance()->db->fetch_row("
|
||||||
SELECT search_array, search_settings
|
SELECT search_array, search_settings
|
||||||
FROM " . BB_SEARCH . "
|
FROM " . BB_SEARCH . "
|
||||||
WHERE session_id = '$session_id'
|
WHERE session_id = '$session_id'
|
||||||
|
@ -451,7 +453,7 @@ $title_match = ($text_match_sql && ($title_only_val || $di->config->get('disable
|
||||||
$post_mode = (!$dl_search && ($display_as_val == $as_posts || isset($_GET['search_author'])));
|
$post_mode = (!$dl_search && ($display_as_val == $as_posts || isset($_GET['search_author'])));
|
||||||
|
|
||||||
// Start building SQL
|
// Start building SQL
|
||||||
$SQL = DB()->get_empty_sql_array();
|
$SQL = Di::getInstance()->db->get_empty_sql_array();
|
||||||
|
|
||||||
// Displaying "as posts" mode
|
// Displaying "as posts" mode
|
||||||
if ($post_mode) {
|
if ($post_mode) {
|
||||||
|
@ -565,7 +567,7 @@ if ($post_mode) {
|
||||||
";
|
";
|
||||||
|
|
||||||
// Fetch posts data
|
// Fetch posts data
|
||||||
if (!$unsorted_rows = DB()->fetch_rowset($sql)) {
|
if (!$unsorted_rows = Di::getInstance()->db->fetch_rowset($sql)) {
|
||||||
bb_die($lang['NO_SEARCH_MATCH']);
|
bb_die($lang['NO_SEARCH_MATCH']);
|
||||||
}
|
}
|
||||||
$tmp = $sorted_rows = array();
|
$tmp = $sorted_rows = array();
|
||||||
|
@ -759,7 +761,7 @@ else {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build SQL for displaying topics
|
// Build SQL for displaying topics
|
||||||
$SQL = DB()->get_empty_sql_array();
|
$SQL = Di::getInstance()->db->get_empty_sql_array();
|
||||||
$join_dl = ($di->config->get('show_dl_status_in_search') && !IS_GUEST);
|
$join_dl = ($di->config->get('show_dl_status_in_search') && !IS_GUEST);
|
||||||
|
|
||||||
$SQL['SELECT'][] = "
|
$SQL['SELECT'][] = "
|
||||||
|
@ -790,7 +792,7 @@ else {
|
||||||
|
|
||||||
// Fetch topics data
|
// Fetch topics data
|
||||||
$topic_rows = array();
|
$topic_rows = array();
|
||||||
foreach (DB()->fetch_rowset($SQL) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($SQL) as $row) {
|
||||||
$topic_rows[$row['topic_id']] = $row;
|
$topic_rows[$row['topic_id']] = $row;
|
||||||
}
|
}
|
||||||
if (!$topic_rows) {
|
if (!$topic_rows) {
|
||||||
|
@ -865,7 +867,7 @@ function fetch_search_ids($sql, $search_type = SEARCH_TYPE_POST)
|
||||||
global $lang, $search_id, $session_id, $items_found, $per_page;
|
global $lang, $search_id, $session_id, $items_found, $per_page;
|
||||||
|
|
||||||
$items_found = array();
|
$items_found = array();
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$items_found[] = $row['item_id'];
|
$items_found[] = $row['item_id'];
|
||||||
}
|
}
|
||||||
if (!$items_count = count($items_found)) {
|
if (!$items_count = count($items_found)) {
|
||||||
|
@ -901,12 +903,12 @@ function fetch_search_ids($sql, $search_type = SEARCH_TYPE_POST)
|
||||||
foreach ($save_in_db as $name) {
|
foreach ($save_in_db as $name) {
|
||||||
$curr_set[$GLOBALS["{$name}_key"]] = $GLOBALS["{$name}_val"];
|
$curr_set[$GLOBALS["{$name}_key"]] = $GLOBALS["{$name}_val"];
|
||||||
}
|
}
|
||||||
$search_settings = DB()->escape(serialize($curr_set));
|
$search_settings = Di::getInstance()->db->escape(serialize($curr_set));
|
||||||
|
|
||||||
$columns = 'session_id, search_type, search_id, search_time, search_settings, search_array';
|
$columns = 'session_id, search_type, search_id, search_time, search_settings, search_array';
|
||||||
$values = "'$session_id', $search_type, '$search_id', " . TIMENOW . ", '$search_settings', '$search_array'";
|
$values = "'$session_id', $search_type, '$search_id', " . TIMENOW . ", '$search_settings', '$search_array'";
|
||||||
|
|
||||||
DB()->query("REPLACE INTO " . BB_SEARCH . " ($columns) VALUES ($values)");
|
Di::getInstance()->db->query("REPLACE INTO " . BB_SEARCH . " ($columns) VALUES ($values)");
|
||||||
}
|
}
|
||||||
|
|
||||||
return array_slice($items_found, 0, $per_page);
|
return array_slice($items_found, 0, $per_page);
|
||||||
|
@ -922,9 +924,9 @@ function prevent_huge_searches($SQL)
|
||||||
$SQL['ORDER BY'] = array();
|
$SQL['ORDER BY'] = array();
|
||||||
$SQL['LIMIT'] = array('0');
|
$SQL['LIMIT'] = array('0');
|
||||||
|
|
||||||
if (DB()->query($SQL) && ($row = DB()->fetch_row("SELECT FOUND_ROWS() AS rows_count"))) {
|
if (Di::getInstance()->db->query($SQL) && ($row = Di::getInstance()->db->fetch_row("SELECT FOUND_ROWS() AS rows_count"))) {
|
||||||
if ($row['rows_count'] > $di->config->get('limit_max_search_results')) {
|
if ($row['rows_count'] > $di->config->get('limit_max_search_results')) {
|
||||||
# bb_log(str_compact(DB()->build_sql($SQL)) ." [{$row['rows_count']} rows]". LOG_LF, 'sql_huge_search');
|
# bb_log(str_compact(Di::getInstance()->db->build_sql($SQL)) ." [{$row['rows_count']} rows]". LOG_LF, 'sql_huge_search');
|
||||||
bb_die('Too_many_search_results');
|
bb_die('Too_many_search_results');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -942,14 +944,14 @@ function username_search($search_match)
|
||||||
|
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT username
|
SELECT username
|
||||||
FROM " . BB_USERS . "
|
FROM bb_users
|
||||||
WHERE username LIKE '" . DB()->escape($username_search) . "'
|
WHERE username LIKE '" . Di::getInstance()->db->escape($username_search) . "'
|
||||||
AND user_id <> " . GUEST_UID . "
|
AND user_id <> " . GUEST_UID . "
|
||||||
ORDER BY username
|
ORDER BY username
|
||||||
LIMIT 200
|
LIMIT 200
|
||||||
";
|
";
|
||||||
|
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$username = htmlCHR(stripslashes(html_entity_decode($row['username'])));
|
$username = htmlCHR(stripslashes(html_entity_decode($row['username'])));
|
||||||
$username_list .= '<option value="' . $username . '">' . $username . '</option>';
|
$username_list .= '<option value="' . $username . '">' . $username . '</option>';
|
||||||
}
|
}
|
||||||
|
|
184
src/Config.php
184
src/Config.php
|
@ -25,101 +25,149 @@
|
||||||
|
|
||||||
namespace TorrentPier;
|
namespace TorrentPier;
|
||||||
|
|
||||||
use Zend\Config\Config as ZendConfig;
|
use \Exception;
|
||||||
|
|
||||||
/**
|
class Config implements \ArrayAccess
|
||||||
* Class Config
|
|
||||||
* @package TorrentPier
|
|
||||||
*/
|
|
||||||
class Config extends ZendConfig
|
|
||||||
{
|
{
|
||||||
protected $root;
|
public $dbQuery;
|
||||||
|
|
||||||
/**
|
protected $data;
|
||||||
* Config constructor.
|
protected $mutableData = [];
|
||||||
*
|
protected $dbLoaded = false;
|
||||||
* @param array $array
|
|
||||||
* @param bool $allowModifications
|
public function __construct(array $data)
|
||||||
* @param Config|null $root
|
|
||||||
*/
|
|
||||||
public function __construct(array $array, $allowModifications = false, Config &$root = null)
|
|
||||||
{
|
{
|
||||||
$this->allowModifications = (bool)$allowModifications;
|
$this->data = $data;
|
||||||
|
|
||||||
$this->root = $root;
|
|
||||||
|
|
||||||
foreach ($array as $key => $value) {
|
|
||||||
if (is_array($value)) {
|
|
||||||
$this->data[$key] = new static($value, $this->allowModifications, $this);
|
|
||||||
} else {
|
|
||||||
$this->data[$key] = $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function __set($name, $value)
|
||||||
* @inheritdoc
|
|
||||||
*/
|
|
||||||
public function get($name, $default = null)
|
|
||||||
{
|
{
|
||||||
$result = parent::get($name, null);
|
$this->set($name, $value);
|
||||||
|
}
|
||||||
|
|
||||||
if ($result === null) {
|
public function __get($name)
|
||||||
if (strpos($name, '.')) {
|
{
|
||||||
$keys = explode('.', $name);
|
return $this->get($name);
|
||||||
$result = $this;
|
}
|
||||||
foreach ($keys as $key) {
|
|
||||||
$result = $result->get($key);
|
public function offsetExists($offset)
|
||||||
if (null === $result) {
|
{
|
||||||
break;
|
return isset($this->data[$offset]) || isset($this->mutableData[$offset]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function offsetGet($name)
|
||||||
|
{
|
||||||
|
$default = null;
|
||||||
|
if (array_key_exists($name, $this->data)) {
|
||||||
|
return $this->data[$name];
|
||||||
|
} elseif (array_key_exists($name, $this->mutableData)) {
|
||||||
|
return $this->mutableData[$name];
|
||||||
|
} elseif (strpos($name, '.') !== false) {
|
||||||
|
return $this->getByPath(explode('.', $name), $default);
|
||||||
|
} else {
|
||||||
|
$ret = $default;
|
||||||
|
if (!$this->dbLoaded && isset($this->dbQuery)) {
|
||||||
|
$this->dbLoaded = true;
|
||||||
|
// TODO: cache
|
||||||
|
$db = Di::getInstance()->db;
|
||||||
|
foreach ($db->query($this->dbQuery)->fetchAll($db::FETCH_NUM) as $row) {
|
||||||
|
if (!array_key_exists($row[0], $this->data)) {
|
||||||
|
if ($row[0] == $name) {
|
||||||
|
$ret = $row[1];
|
||||||
|
}
|
||||||
|
$this->data[$row[0]] = $row[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $ret;
|
||||||
$result = $result ?: $default;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $this->prepareValue($result);
|
public function offsetSet($offset, $value)
|
||||||
|
{
|
||||||
|
$this->set($offset, $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function offsetUnset($offset)
|
||||||
|
{
|
||||||
|
$this->delete($offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isExists($name)
|
||||||
|
{
|
||||||
|
return isset($this->data[$name]) || isset($this->mutableData[$name]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse value
|
* @param $name
|
||||||
*
|
* @param $value
|
||||||
* @param mixed $value
|
* @throws Exception
|
||||||
* @return mixed
|
|
||||||
*/
|
*/
|
||||||
protected function prepareValue($value)
|
public function set($name, $value)
|
||||||
{
|
{
|
||||||
if (is_string($value)) {
|
if (isset($this->data[$name])) {
|
||||||
$strPos = strpos($value, '{self.');
|
throw new Exception("$name is read only");
|
||||||
if ($strPos !== false) {
|
|
||||||
$strPos += 6;
|
|
||||||
$key = substr($value, $strPos, (strpos($value, '}') - $strPos));
|
|
||||||
|
|
||||||
$value = str_replace('{self.' . $key . '}', $this->root->get($key, ''), $value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
$this->mutableData[$name] = $value;
|
||||||
return $value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @param $name
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function toArray()
|
public function delete($name)
|
||||||
{
|
{
|
||||||
$array = [];
|
if (isset($this->data[$name])) {
|
||||||
$data = $this->data;
|
throw new Exception("$name is read only");
|
||||||
|
}
|
||||||
|
unset($this->mutableData[$name]);
|
||||||
|
}
|
||||||
|
|
||||||
/** @var self $value */
|
public function get($name, $default = null)
|
||||||
foreach ($data as $key => $value) {
|
{
|
||||||
if ($value instanceof self) {
|
if (array_key_exists($name, $this->data)) {
|
||||||
$array[$key] = $value->toArray();
|
return $this->data[$name];
|
||||||
} else {
|
} elseif (array_key_exists($name, $this->mutableData)) {
|
||||||
$array[$key] = $this->prepareValue($value);
|
return $this->mutableData[$name];
|
||||||
|
} elseif (strpos($name, '.') !== false) {
|
||||||
|
return $this->getByPath(explode('.', $name), $default);
|
||||||
|
} else {
|
||||||
|
$ret = $default;
|
||||||
|
if (!$this->dbLoaded && isset($this->dbQuery)) {
|
||||||
|
$this->dbLoaded = true;
|
||||||
|
// TODO: cache
|
||||||
|
foreach (Di::getInstance()->db->query($this->dbQuery)->fetchAll() as $row) {
|
||||||
|
if (!array_key_exists($row['config_name'], $this->data)) {
|
||||||
|
if ($row['config_name'] == $name) {
|
||||||
|
$ret = $row['config_value'];
|
||||||
|
}
|
||||||
|
$this->data[$row['config_name']] = $row['config_value'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getByPath(array $path, $default = null)
|
||||||
|
{
|
||||||
|
$ret = $default;
|
||||||
|
$last = count($path) - 1;
|
||||||
|
$tmp = $this->data;
|
||||||
|
foreach ($path as $k => $part) {
|
||||||
|
if (array_key_exists($part, $tmp)) {
|
||||||
|
if ($k == $last) {
|
||||||
|
$ret = $tmp[$part];
|
||||||
|
} else {
|
||||||
|
$tmp = $tmp[$part];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
return $array;
|
public function merge(array $data)
|
||||||
|
{
|
||||||
|
$this->data = array_replace_recursive($this->data, $data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
310
src/Db.php
Normal file
310
src/Db.php
Normal file
|
@ -0,0 +1,310 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* MIT License
|
||||||
|
*
|
||||||
|
* Copyright (c) 2005-2017 TorrentPier
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace TorrentPier;
|
||||||
|
|
||||||
|
use \PDO;
|
||||||
|
use \PDOException;
|
||||||
|
use \PDOStatement;
|
||||||
|
|
||||||
|
class Db extends PDO
|
||||||
|
{
|
||||||
|
const DEFAULT_OPTIONS = [
|
||||||
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||||
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
|
||||||
|
];
|
||||||
|
|
||||||
|
public $type;
|
||||||
|
public $stat;
|
||||||
|
public $sqlTimeTotal = 0;
|
||||||
|
public $numQueries = 0;
|
||||||
|
|
||||||
|
public function __construct(array $config)
|
||||||
|
{
|
||||||
|
$this->stat = $config['stat'] ?? true;
|
||||||
|
$type = $this->type = $config['type'] ?? 'mysql';
|
||||||
|
$options = $config['options'] ?? [];
|
||||||
|
$hostname = $config['hostname'] ?? '127.0.0.1';
|
||||||
|
$database = $config['database'] ?? null;
|
||||||
|
$username = $config['username'] ?? null;
|
||||||
|
$password = $config['password'] ?? null;
|
||||||
|
if (is_callable($password)) {
|
||||||
|
$password = $password();
|
||||||
|
}
|
||||||
|
$socket = $config['socket'] ?? null;
|
||||||
|
$port = $config['port'] ?? null;
|
||||||
|
$charset = $config['charset'] ?? null;
|
||||||
|
|
||||||
|
$dsn = null;
|
||||||
|
switch ($this->type) {
|
||||||
|
/** @noinspection PhpMissingBreakStatementInspection */
|
||||||
|
case 'mariadb':
|
||||||
|
$type = 'mysql';
|
||||||
|
// no break
|
||||||
|
|
||||||
|
case 'mysql':
|
||||||
|
if (isset($socket)) {
|
||||||
|
if ($socket === true) {
|
||||||
|
$socket = ini_get('pdo_mysql.default_socket');
|
||||||
|
}
|
||||||
|
$dsn = "$type:unix_socket=$socket;dbname=$database";
|
||||||
|
} else {
|
||||||
|
$dsn = "$type:host=$hostname" . (isset($port) ? ";port=$port" : '') . ";dbname=$database";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'pgsql':
|
||||||
|
$dsn = "$type:host=$hostname" . (isset($port) ? ";port=$port" : '') . ";dbname=$database";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'sybase':
|
||||||
|
$dsn = "dblib:host=$hostname" . (isset($port) ? ":$port" : '') . ";dbname=$database";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'oracle':
|
||||||
|
$dbname = isset($hostname) ?
|
||||||
|
"//$hostname" . (isset($port) ? ":$port" : ':1521') . "/$database" :
|
||||||
|
$database;
|
||||||
|
|
||||||
|
$dsn = "oci:dbname=$dbname" . (isset($charset) ? ";charset=$charset" : '');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'mssql':
|
||||||
|
$dsn = strstr(PHP_OS, 'WIN') ?
|
||||||
|
"sqlsrv:server=$hostname" . (isset($port) ? ",$port" : '') . ";database=$database" :
|
||||||
|
"dblib:host=$hostname" . (isset($port) ? ":$port" : '') . ";dbname=$database";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'sqlite':
|
||||||
|
$dsn = "$type:$database";
|
||||||
|
$username = null;
|
||||||
|
$password = null;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'default':
|
||||||
|
throw new PDOException("Unknown database driver");
|
||||||
|
}
|
||||||
|
$dsn .= ";charset=utf8";
|
||||||
|
|
||||||
|
parent::__construct(
|
||||||
|
$dsn,
|
||||||
|
$username,
|
||||||
|
is_callable($password) ? $password() : $password,
|
||||||
|
array_replace_recursive(
|
||||||
|
static::DEFAULT_OPTIONS,
|
||||||
|
$options
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$this->setAttribute(static::ATTR_STATEMENT_CLASS, ['\\TorrentPier\\Db\\Statement', [$this]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function prepare($statement, $options = [])
|
||||||
|
{
|
||||||
|
if (!$this->stat) {
|
||||||
|
return parent::prepare($statement);
|
||||||
|
}
|
||||||
|
$t = microtime(true);
|
||||||
|
$ret = parent::prepare($statement);
|
||||||
|
$this->sqlTimeTotal += microtime(true) - $t;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function query($statement, ...$args)
|
||||||
|
{
|
||||||
|
if (!$this->stat) {
|
||||||
|
return parent::query($statement, ...$args);
|
||||||
|
}
|
||||||
|
$t = microtime(true);
|
||||||
|
$ret = parent::query($statement, ...$args);
|
||||||
|
$this->sqlTimeTotal += microtime(true) - $t;
|
||||||
|
$this->numQueries++;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function exec($statement)
|
||||||
|
{
|
||||||
|
if (!$this->stat) {
|
||||||
|
return parent::exec($statement);
|
||||||
|
}
|
||||||
|
$t = microtime(true);
|
||||||
|
$ret = parent::exec($statement);
|
||||||
|
$this->sqlTimeTotal += microtime(true) - $t;
|
||||||
|
$this->numQueries++;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @deprecated
|
||||||
|
* @param $statement
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function fetch_row($statement)
|
||||||
|
{
|
||||||
|
return $this->sql_fetchrow($this->sql_query($statement));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @deprecated
|
||||||
|
* @param $statement
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function fetch_rowset($statement)
|
||||||
|
{
|
||||||
|
return $this->sql_fetchrowset($this->sql_query($statement));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @deprecated
|
||||||
|
* @param PDOStatement $statement
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function sql_fetchrow(PDOStatement $statement)
|
||||||
|
{
|
||||||
|
return $statement->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @deprecated
|
||||||
|
* @param PDOStatement $statement
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function sql_fetchrowset(PDOStatement $statement)
|
||||||
|
{
|
||||||
|
return $statement->fetchAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @deprecated
|
||||||
|
* @param $statement
|
||||||
|
* @return \PDOStatement
|
||||||
|
*/
|
||||||
|
public function sql_query($statement)
|
||||||
|
{
|
||||||
|
if (is_array($statement)) {
|
||||||
|
$statement = $this->build_sql($statement);
|
||||||
|
}
|
||||||
|
return $this->query($statement);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
* Escape data used in sql query
|
||||||
|
* @param $v
|
||||||
|
* @param bool $check_type
|
||||||
|
* @param bool $dont_escape
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function escape($v, $check_type = false, $dont_escape = false)
|
||||||
|
{
|
||||||
|
if ($dont_escape) {
|
||||||
|
return $v;
|
||||||
|
}
|
||||||
|
if (!$check_type) {
|
||||||
|
return $this->quote($v);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (true) {
|
||||||
|
case is_string($v):
|
||||||
|
return $this->quote($v);
|
||||||
|
case is_int($v):
|
||||||
|
return "$v";
|
||||||
|
case is_bool($v):
|
||||||
|
return ($v) ? '1' : '0';
|
||||||
|
case is_float($v):
|
||||||
|
return "'$v'";
|
||||||
|
case is_null($v):
|
||||||
|
return 'NULL';
|
||||||
|
}
|
||||||
|
// if $v has unsuitable type
|
||||||
|
throw new PDOException(__FUNCTION__ . ' - wrong params');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
* Return number of rows
|
||||||
|
* @param PDOStatement $result
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function num_rows(PDOStatement $result)
|
||||||
|
{
|
||||||
|
return $result->rowCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @deprecated
|
||||||
|
* @param $sql_ary
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function build_sql($sql_ary)
|
||||||
|
{
|
||||||
|
$sql = '';
|
||||||
|
array_deep($sql_ary, 'array_unique', false, true);
|
||||||
|
|
||||||
|
foreach ($sql_ary as $clause => $ary) {
|
||||||
|
switch ($clause) {
|
||||||
|
case 'SELECT':
|
||||||
|
$sql .= ($ary) ? ' SELECT ' . join(' ', $sql_ary['select_options']) . ' ' . join(', ', $ary) : '';
|
||||||
|
break;
|
||||||
|
case 'FROM':
|
||||||
|
$sql .= ($ary) ? ' FROM ' . join(', ', $ary) : '';
|
||||||
|
break;
|
||||||
|
case 'INNER JOIN':
|
||||||
|
$sql .= ($ary) ? ' INNER JOIN ' . join(' INNER JOIN ', $ary) : '';
|
||||||
|
break;
|
||||||
|
case 'LEFT JOIN':
|
||||||
|
$sql .= ($ary) ? ' LEFT JOIN ' . join(' LEFT JOIN ', $ary) : '';
|
||||||
|
break;
|
||||||
|
case 'WHERE':
|
||||||
|
$sql .= ($ary) ? ' WHERE ' . join(' AND ', $ary) : '';
|
||||||
|
break;
|
||||||
|
case 'GROUP BY':
|
||||||
|
$sql .= ($ary) ? ' GROUP BY ' . join(', ', $ary) : '';
|
||||||
|
break;
|
||||||
|
case 'HAVING':
|
||||||
|
$sql .= ($ary) ? ' HAVING ' . join(' AND ', $ary) : '';
|
||||||
|
break;
|
||||||
|
case 'ORDER BY':
|
||||||
|
$sql .= ($ary) ? ' ORDER BY ' . join(', ', $ary) : '';
|
||||||
|
break;
|
||||||
|
case 'LIMIT':
|
||||||
|
$sql .= ($ary) ? ' LIMIT ' . join(', ', $ary) : '';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return trim($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @deprecated */
|
||||||
|
public function get_empty_sql_array()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'SELECT' => [],
|
||||||
|
'select_options' => [],
|
||||||
|
'FROM' => [],
|
||||||
|
'INNER JOIN' => [],
|
||||||
|
'LEFT JOIN' => [],
|
||||||
|
'WHERE' => [],
|
||||||
|
'GROUP BY' => [],
|
||||||
|
'HAVING' => [],
|
||||||
|
'ORDER BY' => [],
|
||||||
|
'LIMIT' => []
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,261 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* MIT License
|
|
||||||
*
|
|
||||||
* Copyright (c) 2005-2017 TorrentPier
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace TorrentPier\Db;
|
|
||||||
|
|
||||||
use TorrentPier\Config;
|
|
||||||
use Zend\Db\Adapter\Driver\ResultInterface;
|
|
||||||
use Zend\Db\Adapter\Platform\PlatformInterface;
|
|
||||||
use Zend\Db\Adapter\Profiler\Profiler;
|
|
||||||
use Zend\Db\Adapter\Profiler\ProfilerInterface;
|
|
||||||
use Zend\Db\Exception\InvalidArgumentException;
|
|
||||||
use Zend\Db\ResultSet\ResultSetInterface;
|
|
||||||
use Zend\Db\Sql\Delete;
|
|
||||||
use Zend\Db\Sql\Expression;
|
|
||||||
use Zend\Db\Sql\Insert;
|
|
||||||
use Zend\Db\Sql\Select;
|
|
||||||
use Zend\Db\Sql\Sql;
|
|
||||||
use Zend\Db\Sql\Update;
|
|
||||||
use Zend\Db\Sql\Where;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Adapter
|
|
||||||
* @package TorrentPier\Db
|
|
||||||
*/
|
|
||||||
class Adapter extends \Zend\Db\Adapter\Adapter
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var Entity|null
|
|
||||||
*/
|
|
||||||
protected $resultWrapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function __construct(
|
|
||||||
$driver,
|
|
||||||
PlatformInterface $platform = null,
|
|
||||||
ResultSetInterface $queryResultPrototype = null,
|
|
||||||
ProfilerInterface $profiler = null
|
|
||||||
) {
|
|
||||||
if ($driver instanceof Config) {
|
|
||||||
$driver = $driver->toArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($profiler === null && is_array($driver) && !empty($driver['debug'])) {
|
|
||||||
$profiler = new Profiler();
|
|
||||||
}
|
|
||||||
|
|
||||||
parent::__construct($driver, $platform, $queryResultPrototype, $profiler);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get sql object.
|
|
||||||
*
|
|
||||||
* @return Sql
|
|
||||||
*/
|
|
||||||
protected function getSql()
|
|
||||||
{
|
|
||||||
return new Sql($this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepare table name.
|
|
||||||
*
|
|
||||||
* @param $table
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
protected function prepareTable($table)
|
|
||||||
{
|
|
||||||
$this->resultWrapper = null;
|
|
||||||
|
|
||||||
if (is_string($table) && class_exists($table)) {
|
|
||||||
$this->resultWrapper = new $table;
|
|
||||||
$table = $this->resultWrapper->table();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $table;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Insert row to database.
|
|
||||||
*
|
|
||||||
* @param $table
|
|
||||||
* @param array $values
|
|
||||||
* @return mixed|null
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function insert($table, array $values)
|
|
||||||
{
|
|
||||||
$table = $this->prepareTable($table);
|
|
||||||
$sql = $this->getSql();
|
|
||||||
|
|
||||||
/** @var Insert $sqlInsert */
|
|
||||||
$sqlInsert = $sql->insert($table);
|
|
||||||
$sqlInsert->values($values);
|
|
||||||
|
|
||||||
$statementContainer = $sql->prepareStatementForSqlObject($sqlInsert);
|
|
||||||
/** @var ResultInterface $result */
|
|
||||||
$result = $statementContainer->execute();
|
|
||||||
return $result->getGeneratedValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update rows in database.
|
|
||||||
*
|
|
||||||
* @param $table
|
|
||||||
* @param array $values
|
|
||||||
* @param Where|\Closure|string|array $where
|
|
||||||
* @return int
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function update($table, array $values, $where)
|
|
||||||
{
|
|
||||||
$table = $this->prepareTable($table);
|
|
||||||
$sql = $this->getSql();
|
|
||||||
|
|
||||||
/** @var Update $sqlUpdate */
|
|
||||||
$sqlUpdate = $sql->update($table);
|
|
||||||
$sqlUpdate->set($values);
|
|
||||||
$sqlUpdate->where($where);
|
|
||||||
|
|
||||||
$statementContainer = $sql->prepareStatementForSqlObject($sqlUpdate);
|
|
||||||
/** @var ResultInterface $result */
|
|
||||||
$result = $statementContainer->execute();
|
|
||||||
return $result->getAffectedRows();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Delete rows from database.
|
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param array $where
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function delete($table, array $where)
|
|
||||||
{
|
|
||||||
$table = $this->prepareTable($table);
|
|
||||||
$sql = $this->getSql();
|
|
||||||
|
|
||||||
/** @var Delete $sqlDelete */
|
|
||||||
$sqlDelete = $sql->delete($table);
|
|
||||||
$sqlDelete->where($where);
|
|
||||||
|
|
||||||
$statementContainer = $sql->prepareStatementForSqlObject($sqlDelete);
|
|
||||||
/** @var ResultInterface $result */
|
|
||||||
$result = $statementContainer->execute();
|
|
||||||
return $result->getAffectedRows();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Select rows from database.
|
|
||||||
*
|
|
||||||
* @param $table
|
|
||||||
* @param null|\Closure|array $queryCallback
|
|
||||||
* @return PrepareStatement
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function select($table, $queryCallback = null)
|
|
||||||
{
|
|
||||||
$table = $this->prepareTable($table);
|
|
||||||
$sql = $this->getSql();
|
|
||||||
|
|
||||||
/** @var Select $sqlDelete */
|
|
||||||
$sqlSelect = $sql->select($table);
|
|
||||||
|
|
||||||
if ($queryCallback instanceof \Closure) {
|
|
||||||
call_user_func($queryCallback, $sqlSelect);
|
|
||||||
} elseif (is_array($queryCallback)) {
|
|
||||||
$sqlSelect->where($queryCallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
$statementContainer = $sql->prepareStatementForSqlObject($sqlSelect);
|
|
||||||
return new PrepareStatement($statementContainer, $this->resultWrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Count rows in database.
|
|
||||||
*
|
|
||||||
* @param $table
|
|
||||||
* @param null|\Closure|array $queryCallback
|
|
||||||
* @return int
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function count($table, $queryCallback = null)
|
|
||||||
{
|
|
||||||
$table = $this->prepareTable($table);
|
|
||||||
$sql = $this->getSql();
|
|
||||||
|
|
||||||
/** @var Select $sqlDelete */
|
|
||||||
$sqlSelect = $sql->select($table);
|
|
||||||
|
|
||||||
if ($queryCallback instanceof \Closure) {
|
|
||||||
call_user_func($queryCallback, $sqlSelect);
|
|
||||||
} elseif (is_array($queryCallback)) {
|
|
||||||
$sqlSelect->where($queryCallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
$sqlSelect->columns(['count' => new Expression('COUNT(*)')]);
|
|
||||||
|
|
||||||
$statementContainer = $sql->prepareStatementForSqlObject($sqlSelect);
|
|
||||||
/** @var ResultInterface $result */
|
|
||||||
$result = $statementContainer->execute();
|
|
||||||
return $result->current()['count'];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Increment field by query.
|
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param string $field
|
|
||||||
* @param Where|\Closure|string|array $where
|
|
||||||
* @param int $num
|
|
||||||
* @return int
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function increment($table, $field, $where = null, $num = 1)
|
|
||||||
{
|
|
||||||
return $this->update($table, [
|
|
||||||
$field => new Expression('? + ?', [$field, $num], [Expression::TYPE_IDENTIFIER, Expression::TYPE_VALUE])
|
|
||||||
], $where);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decrement field by query.
|
|
||||||
*
|
|
||||||
* @param string $table
|
|
||||||
* @param string $field
|
|
||||||
* @param Where|\Closure|string|array $where
|
|
||||||
* @param int $num
|
|
||||||
* @return int
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function decrement($table, $field, $where = null, $num = 1)
|
|
||||||
{
|
|
||||||
return $this->update($table, [
|
|
||||||
$field => new Expression('? - ?', [$field, $num], [Expression::TYPE_IDENTIFIER, Expression::TYPE_VALUE])
|
|
||||||
], $where);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,101 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* MIT License
|
|
||||||
*
|
|
||||||
* Copyright (c) 2005-2017 TorrentPier
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace TorrentPier\Db;
|
|
||||||
|
|
||||||
use Zend\Db\Adapter\Driver\StatementInterface;
|
|
||||||
use Zend\Db\Exception\InvalidArgumentException;
|
|
||||||
use Zend\Db\ResultSet\HydratingResultSet;
|
|
||||||
use Zend\Db\ResultSet\ResultSet;
|
|
||||||
use Zend\Hydrator\Reflection;
|
|
||||||
|
|
||||||
class PrepareStatement
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var StatementInterface
|
|
||||||
*/
|
|
||||||
protected $statementContainer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Entity
|
|
||||||
*/
|
|
||||||
protected $resultWrapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PrepareStatement constructor.
|
|
||||||
*
|
|
||||||
* @param StatementInterface $statementContainer
|
|
||||||
* @param Entity|null $resultWrapper
|
|
||||||
*/
|
|
||||||
public function __construct(StatementInterface $statementContainer, Entity $resultWrapper = null)
|
|
||||||
{
|
|
||||||
$this->statementContainer = $statementContainer;
|
|
||||||
$this->resultWrapper = $resultWrapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Executing a query and wrapping a result.
|
|
||||||
*
|
|
||||||
* @return HydratingResultSet|ResultSet
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
|
||||||
protected function execute()
|
|
||||||
{
|
|
||||||
$result = $this->statementContainer->execute();
|
|
||||||
|
|
||||||
if ($this->resultWrapper) {
|
|
||||||
$entityClass = $this->resultWrapper;
|
|
||||||
$resultSet = new HydratingResultSet(new Reflection(), new $entityClass);
|
|
||||||
$resultSet->initialize($result);
|
|
||||||
} else {
|
|
||||||
$resultSet = new ResultSet();
|
|
||||||
$resultSet->initialize($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $resultSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Current result.
|
|
||||||
*
|
|
||||||
* @return array|null
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function one()
|
|
||||||
{
|
|
||||||
return $this->execute()->current() ?: null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* All results.
|
|
||||||
*
|
|
||||||
* @return HydratingResultSet|ResultSet
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
|
||||||
public function all()
|
|
||||||
{
|
|
||||||
return $this->execute();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -25,12 +25,27 @@
|
||||||
|
|
||||||
namespace TorrentPier\Db;
|
namespace TorrentPier\Db;
|
||||||
|
|
||||||
abstract class Entity
|
use \PDOStatement;
|
||||||
{
|
use TorrentPier\Db;
|
||||||
protected $table;
|
|
||||||
|
|
||||||
public function table()
|
class Statement extends PDOStatement
|
||||||
|
{
|
||||||
|
protected $db = null;
|
||||||
|
|
||||||
|
protected function __construct(Db $db)
|
||||||
{
|
{
|
||||||
return $this->table;
|
$this->db = $db;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function execute($input_parameters = null)
|
||||||
|
{
|
||||||
|
if (!$this->db->stat) {
|
||||||
|
return parent::execute($input_parameters);
|
||||||
|
}
|
||||||
|
$t = microtime(true);
|
||||||
|
$ret = parent::execute($input_parameters);
|
||||||
|
$this->db->sqlTimeTotal += microtime(true) - $t;
|
||||||
|
$this->db->numQueries++;
|
||||||
|
return $ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -30,6 +30,9 @@ use Pimple\Container;
|
||||||
/**
|
/**
|
||||||
* Class Di
|
* Class Di
|
||||||
* Dependency Injection Container.
|
* Dependency Injection Container.
|
||||||
|
*
|
||||||
|
* @property Config $config
|
||||||
|
* @property Db $db
|
||||||
*/
|
*/
|
||||||
class Di extends Container
|
class Di extends Container
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,10 +41,10 @@ class CacheServiceProvider implements ServiceProviderInterface
|
||||||
public function register(Container $container)
|
public function register(Container $container)
|
||||||
{
|
{
|
||||||
$container['cache'] = function (Container $container) {
|
$container['cache'] = function (Container $container) {
|
||||||
$setting = $container['config.services.cache'];
|
$setting = $container['config']->get('services.cache');
|
||||||
/** @var Adapter $adapter */
|
/** @var Adapter $adapter */
|
||||||
$adapter = new $setting['adapter']();
|
$adapter = new $setting['adapter']();
|
||||||
$adapter->setOptions($setting['options']->toArray());
|
$adapter->setOptions($setting['options']);
|
||||||
return $adapter;
|
return $adapter;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,11 +41,15 @@ class ConfigServiceProvider implements ServiceProviderInterface
|
||||||
*/
|
*/
|
||||||
public function register(Container $container)
|
public function register(Container $container)
|
||||||
{
|
{
|
||||||
$container['config'] = function ($container) {
|
$container['config'] = function (Container $container) {
|
||||||
$config = new Config(Factory::fromFile($container['file.system.main']));
|
$config = new Config(Factory::fromFile($container['file.system.main']));
|
||||||
|
|
||||||
if (isset($container['file.local.main']) && file_exists($container['file.local.main'])) {
|
if (isset($container['file.local.main']) && file_exists($container['file.local.main'])) {
|
||||||
$config->merge(new Config(Factory::fromFile($container['file.local.main'])));
|
$config->merge(Factory::fromFile($container['file.local.main']));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($container['config.dbQuery'])) {
|
||||||
|
$config->dbQuery = $container['config.dbQuery'];
|
||||||
}
|
}
|
||||||
|
|
||||||
return $config;
|
return $config;
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace TorrentPier\ServiceProviders;
|
||||||
|
|
||||||
use Pimple\Container;
|
use Pimple\Container;
|
||||||
use Pimple\ServiceProviderInterface;
|
use Pimple\ServiceProviderInterface;
|
||||||
use TorrentPier\Db\Adapter;
|
use TorrentPier\Db;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class DbServiceProvider
|
* Class DbServiceProvider
|
||||||
|
@ -40,10 +40,8 @@ class DbServiceProvider implements ServiceProviderInterface
|
||||||
*/
|
*/
|
||||||
public function register(Container $container)
|
public function register(Container $container)
|
||||||
{
|
{
|
||||||
$container['db'] = function ($container) {
|
$container['db'] = function (Container $container) {
|
||||||
$adapter = new Adapter($container['config.services.db']);
|
return new Db($container['config']->get('services.db'));
|
||||||
unset($container['config.services.db']);
|
|
||||||
return $adapter;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,8 +45,6 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
|
||||||
'key1' => 'value1',
|
'key1' => 'value1',
|
||||||
'key2' => [
|
'key2' => [
|
||||||
'key3' => 'value2',
|
'key3' => 'value2',
|
||||||
'key4' => '{self.key1}',
|
|
||||||
'key5' => '{self.key2.key4}',
|
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -62,31 +60,9 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
static::assertEquals($this->config->get('key1'), 'value1');
|
static::assertEquals($this->config->get('key1'), 'value1');
|
||||||
static::assertEquals($this->config->get('key2.key3'), 'value2');
|
static::assertEquals($this->config->get('key2.key3'), 'value2');
|
||||||
static::assertEquals($this->config->get('key2.key4'), 'value1');
|
|
||||||
static::assertEquals($this->config->get('key2.key5'), 'value1');
|
|
||||||
static::assertEquals($this->config->get('key2')->get('key3'), 'value2');
|
|
||||||
|
|
||||||
static::assertEquals($this->config['key1'], 'value1');
|
static::assertEquals($this->config['key1'], 'value1');
|
||||||
static::assertEquals($this->config['key2.key3'], 'value2');
|
static::assertEquals($this->config['key2.key3'], 'value2');
|
||||||
static::assertEquals($this->config['key2.key4'], 'value1');
|
|
||||||
static::assertEquals($this->config['key2.key5'], 'value1');
|
|
||||||
static::assertEquals($this->config['key2']['key3'], 'value2');
|
static::assertEquals($this->config['key2']['key3'], 'value2');
|
||||||
|
|
||||||
static::assertEquals($this->config['key2.key6'], null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers \TorrentPier\Config::toArray
|
|
||||||
*/
|
|
||||||
public function testToArray()
|
|
||||||
{
|
|
||||||
static::assertEquals($this->config->toArray(), [
|
|
||||||
'key1' => 'value1',
|
|
||||||
'key2' => [
|
|
||||||
'key3' => 'value2',
|
|
||||||
'key4' => 'value1',
|
|
||||||
'key5' => 'value1',
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,234 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* MIT License
|
|
||||||
*
|
|
||||||
* Copyright (c) 2005-2017 TorrentPier
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace TorrentPier\Db;
|
|
||||||
|
|
||||||
use Zend\Db\Adapter\Driver\Pdo\Connection;
|
|
||||||
use Zend\Db\Adapter\Driver\Pdo\Pdo;
|
|
||||||
use Zend\Db\Adapter\Driver\Pdo\Result;
|
|
||||||
use Zend\Db\Adapter\Driver\Pdo\Statement;
|
|
||||||
use Zend\Db\Adapter\Platform\AbstractPlatform;
|
|
||||||
use Zend\Db\Sql\Delete;
|
|
||||||
use Zend\Db\Sql\Insert;
|
|
||||||
use Zend\Db\Sql\Sql;
|
|
||||||
use Zend\Db\Sql\Update;
|
|
||||||
|
|
||||||
class AdapterTest extends \PHPUnit_Framework_TestCase
|
|
||||||
{
|
|
||||||
const AFFECTED_ROWS = 2;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var \PHPUnit_Framework_MockObject_MockObject|Adapter
|
|
||||||
*/
|
|
||||||
protected $adapterMock;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var \PHPUnit_Framework_MockObject_MockObject|Sql
|
|
||||||
*/
|
|
||||||
protected $sqlMock;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var \PHPUnit_Framework_MockObject_MockObject|Statement
|
|
||||||
*/
|
|
||||||
protected $statementMock;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function setUp()
|
|
||||||
{
|
|
||||||
$resultMock = $this->getMock(Result::class, ['getGeneratedValue', 'getAffectedRows']);
|
|
||||||
$resultMock->method('getGeneratedValue')->willReturn(self::AFFECTED_ROWS);
|
|
||||||
$resultMock->method('getAffectedRows')->willReturn(self::AFFECTED_ROWS);
|
|
||||||
|
|
||||||
$this->statementMock = $this->getMock(Statement::class, ['execute']);
|
|
||||||
$this->statementMock->method('execute')->willReturn($resultMock);
|
|
||||||
|
|
||||||
$this->adapterMock = $this->getMockBuilder(Adapter::class)
|
|
||||||
->setMethods(['getSql', 'getPlatform', 'getDriver'])
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$platformMock = $this->getMock(AbstractPlatform::class, ['getName', 'quoteIdentifier', 'quoteValue']);
|
|
||||||
$platformMock->method('quoteIdentifier')->willReturnCallback(function ($v) {
|
|
||||||
return '`' . $v . '`';
|
|
||||||
});
|
|
||||||
$platformMock->method('quoteValue')->willReturnCallback(function ($v) {
|
|
||||||
if (is_int($v)) {
|
|
||||||
return $v;
|
|
||||||
} elseif ($v instanceof \DateTime) {
|
|
||||||
$v = $v->format('Y-m-d H:i:s');
|
|
||||||
}
|
|
||||||
|
|
||||||
return '\'' . $v . '\'';
|
|
||||||
});
|
|
||||||
$platformMock->method('getName')->willReturn('platform name');
|
|
||||||
$this->adapterMock->method('getPlatform')->willReturn($platformMock);
|
|
||||||
|
|
||||||
$connectionMock = $this->getMock(Connection::class);
|
|
||||||
|
|
||||||
$driverMock = $this->getMock(Pdo::class, [], [
|
|
||||||
$connectionMock,
|
|
||||||
$this->statementMock,
|
|
||||||
$resultMock,
|
|
||||||
]);
|
|
||||||
$this->adapterMock->method('getDriver')->willReturn($driverMock);
|
|
||||||
|
|
||||||
$this->sqlMock = $this->getMockBuilder(Sql::class)
|
|
||||||
->setMethods(['prepareStatementForSqlObject'])
|
|
||||||
->setConstructorArgs([$this->adapterMock])
|
|
||||||
->getMock();
|
|
||||||
$this->adapterMock->method('getSql')->willReturn($this->sqlMock);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create sql insert query.
|
|
||||||
* @covers \TorrentPier\Db\Adapter::insert
|
|
||||||
*/
|
|
||||||
public function testInsert()
|
|
||||||
{
|
|
||||||
$date = new \DateTime('now', new \DateTimeZone('UTC'));
|
|
||||||
|
|
||||||
$this->sqlMock->expects(static::once())
|
|
||||||
->method('prepareStatementForSqlObject')
|
|
||||||
->willReturnCallback(function (Insert $sqlObject) use ($date) {
|
|
||||||
static::assertEquals(
|
|
||||||
join(' ', [
|
|
||||||
"INSERT INTO",
|
|
||||||
"`tableName` (`field_int`, `field_str`, `field_date`)",
|
|
||||||
"VALUES (123, 'string', '{$date->format('Y-m-d H:i:s')}')",
|
|
||||||
]),
|
|
||||||
$this->sqlMock->buildSqlString($sqlObject)
|
|
||||||
);
|
|
||||||
return $this->statementMock;
|
|
||||||
});
|
|
||||||
|
|
||||||
$actual = $this->adapterMock->insert('tableName', [
|
|
||||||
'field_int' => 123,
|
|
||||||
'field_str' => 'string',
|
|
||||||
'field_date' => $date,
|
|
||||||
]);
|
|
||||||
|
|
||||||
static::assertEquals(self::AFFECTED_ROWS, $actual);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create sql update query.
|
|
||||||
* @covers \TorrentPier\Db\Adapter::update
|
|
||||||
*/
|
|
||||||
public function testUpdate()
|
|
||||||
{
|
|
||||||
$date = new \DateTime('now', new \DateTimeZone('UTC'));
|
|
||||||
|
|
||||||
$this->sqlMock->expects(static::once())
|
|
||||||
->method('prepareStatementForSqlObject')
|
|
||||||
->willReturnCallback(function (Update $sqlObject) use ($date) {
|
|
||||||
static::assertEquals(
|
|
||||||
join(' ', [
|
|
||||||
"UPDATE `tableName` SET",
|
|
||||||
"`field_int` = 123, `field_str` = 'string', `field_date` = '{$date->format('Y-m-d H:i:s')}'",
|
|
||||||
"WHERE \"field_id\" = 1"
|
|
||||||
]),
|
|
||||||
$this->sqlMock->buildSqlString($sqlObject)
|
|
||||||
);
|
|
||||||
return $this->statementMock;
|
|
||||||
});
|
|
||||||
|
|
||||||
$actual = $this->adapterMock->update('tableName', [
|
|
||||||
'field_int' => 123,
|
|
||||||
'field_str' => 'string',
|
|
||||||
'field_date' => $date,
|
|
||||||
], [
|
|
||||||
'field_id' => 1
|
|
||||||
]);
|
|
||||||
|
|
||||||
static::assertEquals(self::AFFECTED_ROWS, $actual);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create sql delete query.
|
|
||||||
* @covers \TorrentPier\Db\Adapter::delete
|
|
||||||
*/
|
|
||||||
public function testDelete()
|
|
||||||
{
|
|
||||||
$this->sqlMock->expects(static::once())
|
|
||||||
->method('prepareStatementForSqlObject')
|
|
||||||
->willReturnCallback(function (Delete $sqlObject) {
|
|
||||||
static::assertEquals(
|
|
||||||
"DELETE FROM `tableName` WHERE \"field_id\" = 1",
|
|
||||||
$this->sqlMock->buildSqlString($sqlObject)
|
|
||||||
);
|
|
||||||
return $this->statementMock;
|
|
||||||
});
|
|
||||||
|
|
||||||
$actual = $this->adapterMock->delete('tableName', [
|
|
||||||
'field_id' => 1
|
|
||||||
]);
|
|
||||||
|
|
||||||
static::assertEquals(self::AFFECTED_ROWS, $actual);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create sql increment query.
|
|
||||||
* @covers \TorrentPier\Db\Adapter::increment
|
|
||||||
*/
|
|
||||||
public function testIncrement()
|
|
||||||
{
|
|
||||||
$this->sqlMock->expects(static::once())
|
|
||||||
->method('prepareStatementForSqlObject')
|
|
||||||
->willReturnCallback(function (Update $sqlObject) {
|
|
||||||
static::assertEquals(
|
|
||||||
"UPDATE `tableName` SET `inc` = \"inc\" + 1 WHERE \"field_id\" = 1",
|
|
||||||
$this->sqlMock->buildSqlString($sqlObject)
|
|
||||||
);
|
|
||||||
return $this->statementMock;
|
|
||||||
});
|
|
||||||
|
|
||||||
$actual = $this->adapterMock->increment('tableName', 'inc', ['field_id' => 1]);
|
|
||||||
|
|
||||||
static::assertEquals(self::AFFECTED_ROWS, $actual);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create sql decrement query.
|
|
||||||
* @covers \TorrentPier\Db\Adapter::decrement
|
|
||||||
*/
|
|
||||||
public function testDecrement()
|
|
||||||
{
|
|
||||||
$this->sqlMock->expects(static::once())
|
|
||||||
->method('prepareStatementForSqlObject')
|
|
||||||
->willReturnCallback(function (Update $sqlObject) {
|
|
||||||
static::assertEquals(
|
|
||||||
"UPDATE `tableName` SET `inc` = \"inc\" - 1 WHERE \"field_id\" = 1",
|
|
||||||
$this->sqlMock->buildSqlString($sqlObject)
|
|
||||||
);
|
|
||||||
return $this->statementMock;
|
|
||||||
});
|
|
||||||
|
|
||||||
$actual = $this->adapterMock->decrement('tableName', 'inc', ['field_id' => 1]);
|
|
||||||
|
|
||||||
static::assertEquals(self::AFFECTED_ROWS, $actual);
|
|
||||||
}
|
|
||||||
}
|
|
18
tracker.php
18
tracker.php
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'tracker');
|
define('BB_SCRIPT', 'tracker');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require(BB_ROOT . 'common.php');
|
require(BB_ROOT . 'common.php');
|
||||||
|
@ -79,7 +81,7 @@ $posts_tbl = BB_POSTS . ' p';
|
||||||
$topics_tbl = BB_TOPICS . ' t';
|
$topics_tbl = BB_TOPICS . ' t';
|
||||||
$users_tbl = BB_USERS . ' u';
|
$users_tbl = BB_USERS . ' u';
|
||||||
$tracker_tbl = BB_BT_TRACKER . ' tr';
|
$tracker_tbl = BB_BT_TRACKER . ' tr';
|
||||||
$tr_snap_tbl = BB_BT_TRACKER_SNAP . ' sn';
|
$tr_snap_tbl = 'bb_bt_tracker_snap sn';
|
||||||
$dl_stat_tbl = BB_BT_DLSTATUS . ' dl';
|
$dl_stat_tbl = BB_BT_DLSTATUS . ' dl';
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -321,7 +323,7 @@ $tor_list_ary = array();
|
||||||
$tor_list_sql = '';
|
$tor_list_sql = '';
|
||||||
|
|
||||||
if ($search_id) {
|
if ($search_id) {
|
||||||
$row = DB()->fetch_row("
|
$row = Di::getInstance()->db->fetch_row("
|
||||||
SELECT search_array, search_settings
|
SELECT search_array, search_settings
|
||||||
FROM " . BB_SEARCH . "
|
FROM " . BB_SEARCH . "
|
||||||
WHERE session_id = '$session_id'
|
WHERE session_id = '$session_id'
|
||||||
|
@ -516,7 +518,7 @@ if ($allowed_forums) {
|
||||||
foreach ($save_in_db as $name) {
|
foreach ($save_in_db as $name) {
|
||||||
$curr_set[${"{$name}_key"}] = ${"{$name}_val"};
|
$curr_set[${"{$name}_key"}] = ${"{$name}_val"};
|
||||||
}
|
}
|
||||||
$curr_set_sql = DB()->escape(serialize($curr_set));
|
$curr_set_sql = Di::getInstance()->db->escape(serialize($curr_set));
|
||||||
|
|
||||||
// Text search
|
// Text search
|
||||||
$search_match_topics_csv = '';
|
$search_match_topics_csv = '';
|
||||||
|
@ -547,7 +549,7 @@ if ($allowed_forums) {
|
||||||
$join_dl = $dl_search;
|
$join_dl = $dl_search;
|
||||||
|
|
||||||
// Start building SQL
|
// Start building SQL
|
||||||
$SQL = DB()->get_empty_sql_array();
|
$SQL = Di::getInstance()->db->get_empty_sql_array();
|
||||||
|
|
||||||
// SELECT
|
// SELECT
|
||||||
$SQL['SELECT'][] = "tor.topic_id";
|
$SQL['SELECT'][] = "tor.topic_id";
|
||||||
|
@ -621,7 +623,7 @@ if ($allowed_forums) {
|
||||||
$tor_list_sql = '';
|
$tor_list_sql = '';
|
||||||
$tor_count = 0;
|
$tor_count = 0;
|
||||||
} else {
|
} else {
|
||||||
foreach (DB()->fetch_rowset($SQL) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($SQL) as $row) {
|
||||||
$tor_list_ary[] = $row['topic_id'];
|
$tor_list_ary[] = $row['topic_id'];
|
||||||
}
|
}
|
||||||
$tor_list_sql = join(',', $tor_list_ary);
|
$tor_list_sql = join(',', $tor_list_ary);
|
||||||
|
@ -643,7 +645,7 @@ if ($allowed_forums) {
|
||||||
$columns = 'session_id, search_type, search_id, search_time, search_settings, search_array';
|
$columns = 'session_id, search_type, search_id, search_time, search_settings, search_array';
|
||||||
$values = "'$session_id', $search_type, '$search_id', " . TIMENOW . ", '$curr_set_sql', '$tor_list_sql'";
|
$values = "'$session_id', $search_type, '$search_id', " . TIMENOW . ", '$curr_set_sql', '$tor_list_sql'";
|
||||||
|
|
||||||
DB()->query("REPLACE INTO " . BB_SEARCH . " ($columns) VALUES ($values)");
|
Di::getInstance()->db->query("REPLACE INTO " . BB_SEARCH . " ($columns) VALUES ($values)");
|
||||||
}
|
}
|
||||||
unset($columns, $values, $curr_set_sql, $tor_list_sql);
|
unset($columns, $values, $curr_set_sql, $tor_list_sql);
|
||||||
|
|
||||||
|
@ -704,9 +706,9 @@ if ($allowed_forums) {
|
||||||
$limit
|
$limit
|
||||||
";
|
";
|
||||||
|
|
||||||
$passkey = DB()->fetch_row("SELECT auth_key FROM " . BB_BT_USERS . " WHERE user_id = " . (int)$user_id . " LIMIT 1");
|
$passkey = Di::getInstance()->db->fetch_row("SELECT auth_key FROM " . BB_BT_USERS . " WHERE user_id = " . (int)$user_id . " LIMIT 1");
|
||||||
// Build torrents table
|
// Build torrents table
|
||||||
foreach (DB()->fetch_rowset($sql) as $tor) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $tor) {
|
||||||
$dl = isset($tor['speed_down']) ? $tor['speed_down'] : 0;
|
$dl = isset($tor['speed_down']) ? $tor['speed_down'] : 0;
|
||||||
$ul = isset($tor['speed_up']) ? $tor['speed_up'] : 0;
|
$ul = isset($tor['speed_up']) ? $tor['speed_up'] : 0;
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'forum');
|
define('BB_SCRIPT', 'forum');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require(BB_ROOT . 'common.php');
|
require(BB_ROOT . 'common.php');
|
||||||
|
@ -162,10 +164,10 @@ if (!$forum_data['forum_parent'] && isset($forums['f'][$forum_id]['subforums'])
|
||||||
f.forum_id, f.forum_status, f.forum_last_post_id, f.forum_posts, f.forum_topics,
|
f.forum_id, f.forum_status, f.forum_last_post_id, f.forum_posts, f.forum_topics,
|
||||||
t.topic_last_post_time, t.topic_id AS last_topic_id, t.topic_title AS last_topic_title,
|
t.topic_last_post_time, t.topic_id AS last_topic_id, t.topic_title AS last_topic_title,
|
||||||
p.poster_id AS sf_last_user_id, IF(p.poster_id = $anon, p.post_username, u.username) AS sf_last_username, u.user_rank
|
p.poster_id AS sf_last_user_id, IF(p.poster_id = $anon, p.post_username, u.username) AS sf_last_username, u.user_rank
|
||||||
FROM " . BB_FORUMS . " f
|
FROM bb_forums f
|
||||||
LEFT JOIN " . BB_TOPICS . " t ON(f.forum_last_post_id = t.topic_last_post_id)
|
LEFT JOIN bb_topics t ON(f.forum_last_post_id = t.topic_last_post_id)
|
||||||
LEFT JOIN " . BB_POSTS . " p ON(f.forum_last_post_id = p.post_id)
|
LEFT JOIN " . BB_POSTS . " p ON(f.forum_last_post_id = p.post_id)
|
||||||
LEFT JOIN " . BB_USERS . " u ON(p.poster_id = u.user_id)
|
LEFT JOIN bb_users u ON(p.poster_id = u.user_id)
|
||||||
WHERE f.forum_parent = $forum_id
|
WHERE f.forum_parent = $forum_id
|
||||||
$only_new_sql
|
$only_new_sql
|
||||||
$ignore_forum_sql
|
$ignore_forum_sql
|
||||||
|
@ -173,7 +175,7 @@ if (!$forum_data['forum_parent'] && isset($forums['f'][$forum_id]['subforums'])
|
||||||
ORDER BY f.forum_order
|
ORDER BY f.forum_order
|
||||||
";
|
";
|
||||||
|
|
||||||
if ($rowset = DB()->fetch_rowset($sql)) {
|
if ($rowset = Di::getInstance()->db->fetch_rowset($sql)) {
|
||||||
$template->assign_vars(array(
|
$template->assign_vars(array(
|
||||||
'SHOW_SUBFORUMS' => true,
|
'SHOW_SUBFORUMS' => true,
|
||||||
'FORUM_IMG' => $images['forum'],
|
'FORUM_IMG' => $images['forum'],
|
||||||
|
@ -270,12 +272,12 @@ if (!empty($_REQUEST['topicdays'])) {
|
||||||
if (($req_topic_days = $di->request->query->getInt('topicdays')) && isset($sel_previous_days[$req_topic_days])) {
|
if (($req_topic_days = $di->request->query->getInt('topicdays')) && isset($sel_previous_days[$req_topic_days])) {
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT COUNT(*) AS forum_topics
|
SELECT COUNT(*) AS forum_topics
|
||||||
FROM " . BB_TOPICS . "
|
FROM bb_topics
|
||||||
WHERE forum_id = $forum_id
|
WHERE forum_id = $forum_id
|
||||||
AND topic_last_post_time > " . (TIMENOW - 86400 * $req_topic_days) . "
|
AND topic_last_post_time > " . (TIMENOW - 86400 * $req_topic_days) . "
|
||||||
";
|
";
|
||||||
|
|
||||||
if ($row = DB()->fetch_row($sql)) {
|
if ($row = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
$topic_days = $req_topic_days;
|
$topic_days = $req_topic_days;
|
||||||
$forum_topics = $row['forum_topics'];
|
$forum_topics = $row['forum_topics'];
|
||||||
}
|
}
|
||||||
|
@ -317,9 +319,9 @@ if ($forum_data['allow_reg_tracker']) {
|
||||||
$select_tor_sql .= ($join_dl) ? ', dl.user_status AS dl_status' : '';
|
$select_tor_sql .= ($join_dl) ? ', dl.user_status AS dl_status' : '';
|
||||||
|
|
||||||
$join_tor_sql = "
|
$join_tor_sql = "
|
||||||
LEFT JOIN " . BB_BT_TORRENTS . " tor ON(t.topic_id = tor.topic_id)
|
LEFT JOIN bb_bt_torrents tor ON(t.topic_id = tor.topic_id)
|
||||||
LEFT JOIN " . BB_BT_USERS . " bt ON(bt.user_id = {$userdata['user_id']})
|
LEFT JOIN " . BB_BT_USERS . " bt ON(bt.user_id = {$userdata['user_id']})
|
||||||
LEFT JOIN " . BB_BT_TRACKER_SNAP . " sn ON(tor.topic_id = sn.topic_id)
|
LEFT JOIN bb_bt_tracker_snap sn ON(tor.topic_id = sn.topic_id)
|
||||||
";
|
";
|
||||||
$join_tor_sql .= ($join_dl) ? " LEFT JOIN " . BB_BT_DLSTATUS . " dl ON(dl.user_id = {$userdata['user_id']} AND dl.topic_id = t.topic_id)" : '';
|
$join_tor_sql .= ($join_dl) ? " LEFT JOIN " . BB_BT_DLSTATUS . " dl ON(dl.user_id = {$userdata['user_id']} AND dl.topic_id = t.topic_id)" : '';
|
||||||
}
|
}
|
||||||
|
@ -344,7 +346,7 @@ $topic_ids = $topic_rowset = array();
|
||||||
// IDs
|
// IDs
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT t.topic_id
|
SELECT t.topic_id
|
||||||
FROM " . BB_TOPICS . " t
|
FROM bb_topics t
|
||||||
WHERE t.forum_id = $forum_id
|
WHERE t.forum_id = $forum_id
|
||||||
$only_new_sql
|
$only_new_sql
|
||||||
$title_match_sql
|
$title_match_sql
|
||||||
|
@ -352,24 +354,24 @@ $sql = "
|
||||||
$order_sql
|
$order_sql
|
||||||
LIMIT $start, $topics_per_page
|
LIMIT $start, $topics_per_page
|
||||||
";
|
";
|
||||||
foreach (DB()->fetch_rowset($sql) as $row) {
|
foreach (Di::getInstance()->db->fetch_rowset($sql) as $row) {
|
||||||
$topic_ids[] = $row['topic_id'];
|
$topic_ids[] = $row['topic_id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Titles, posters etc.
|
// Titles, posters etc.
|
||||||
if ($topics_csv = join(',', $topic_ids)) {
|
if ($topics_csv = join(',', $topic_ids)) {
|
||||||
$topic_rowset = DB()->fetch_rowset("
|
$topic_rowset = Di::getInstance()->db->fetch_rowset("
|
||||||
SELECT
|
SELECT
|
||||||
t.*, t.topic_poster AS first_user_id, u1.user_rank as first_user_rank,
|
t.*, t.topic_poster AS first_user_id, u1.user_rank as first_user_rank,
|
||||||
IF(t.topic_poster = $anon, p1.post_username, u1.username) AS first_username,
|
IF(t.topic_poster = $anon, p1.post_username, u1.username) AS first_username,
|
||||||
p2.poster_id AS last_user_id, u2.user_rank as last_user_rank,
|
p2.poster_id AS last_user_id, u2.user_rank as last_user_rank,
|
||||||
IF(p2.poster_id = $anon, p2.post_username, u2.username) AS last_username
|
IF(p2.poster_id = $anon, p2.post_username, u2.username) AS last_username
|
||||||
$select_tor_sql
|
$select_tor_sql
|
||||||
FROM " . BB_TOPICS . " t
|
FROM bb_topics t
|
||||||
LEFT JOIN " . BB_POSTS . " p1 ON(t.topic_first_post_id = p1.post_id)
|
LEFT JOIN " . BB_POSTS . " p1 ON(t.topic_first_post_id = p1.post_id)
|
||||||
LEFT JOIN " . BB_USERS . " u1 ON(t.topic_poster = u1.user_id)
|
LEFT JOIN bb_users u1 ON(t.topic_poster = u1.user_id)
|
||||||
LEFT JOIN " . BB_POSTS . " p2 ON(t.topic_last_post_id = p2.post_id)
|
LEFT JOIN " . BB_POSTS . " p2 ON(t.topic_last_post_id = p2.post_id)
|
||||||
LEFT JOIN " . BB_USERS . " u2 ON(p2.poster_id = u2.user_id)
|
LEFT JOIN bb_users u2 ON(p2.poster_id = u2.user_id)
|
||||||
$join_tor_sql
|
$join_tor_sql
|
||||||
WHERE t.topic_id IN($topics_csv)
|
WHERE t.topic_id IN($topics_csv)
|
||||||
$where_tor_sql
|
$where_tor_sql
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use \TorrentPier\Di;
|
||||||
|
|
||||||
define('BB_SCRIPT', 'topic');
|
define('BB_SCRIPT', 'topic');
|
||||||
define('BB_ROOT', './');
|
define('BB_ROOT', './');
|
||||||
require(BB_ROOT . 'common.php');
|
require(BB_ROOT . 'common.php');
|
||||||
|
@ -83,15 +85,15 @@ $tracking_forums = get_tracks('forum');
|
||||||
// Get forum/topic data
|
// Get forum/topic data
|
||||||
if ($topic_id) {
|
if ($topic_id) {
|
||||||
$sql = "SELECT t.*, f.*, tw.notify_status
|
$sql = "SELECT t.*, f.*, tw.notify_status
|
||||||
FROM " . BB_TOPICS . " t
|
FROM bb_topics t
|
||||||
LEFT JOIN " . BB_FORUMS . " f USING(forum_id)
|
LEFT JOIN bb_forums f USING(forum_id)
|
||||||
LEFT JOIN " . BB_TOPICS_WATCH . " tw ON(tw.topic_id = t.topic_id AND tw.user_id = {$userdata['user_id']})
|
LEFT JOIN " . BB_TOPICS_WATCH . " tw ON(tw.topic_id = t.topic_id AND tw.user_id = {$userdata['user_id']})
|
||||||
WHERE t.topic_id = $topic_id
|
WHERE t.topic_id = $topic_id
|
||||||
";
|
";
|
||||||
} elseif ($post_id) {
|
} elseif ($post_id) {
|
||||||
$sql = "SELECT t.*, f.*, p.post_time, tw.notify_status
|
$sql = "SELECT t.*, f.*, p.post_time, tw.notify_status
|
||||||
FROM " . BB_TOPICS . " t
|
FROM bb_topics t
|
||||||
LEFT JOIN " . BB_FORUMS . " f USING(forum_id)
|
LEFT JOIN bb_forums f USING(forum_id)
|
||||||
LEFT JOIN " . BB_POSTS . " p USING(topic_id)
|
LEFT JOIN " . BB_POSTS . " p USING(topic_id)
|
||||||
LEFT JOIN " . BB_TOPICS_WATCH . " tw ON(tw.topic_id = t.topic_id AND tw.user_id = {$userdata['user_id']})
|
LEFT JOIN " . BB_TOPICS_WATCH . " tw ON(tw.topic_id = t.topic_id AND tw.user_id = {$userdata['user_id']})
|
||||||
WHERE p.post_id = $post_id
|
WHERE p.post_id = $post_id
|
||||||
|
@ -100,7 +102,7 @@ if ($topic_id) {
|
||||||
bb_die($lang['TOPIC_POST_NOT_EXIST']);
|
bb_die($lang['TOPIC_POST_NOT_EXIST']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$t_data = DB()->fetch_row($sql)) {
|
if (!$t_data = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
meta_refresh('index.php', 10);
|
meta_refresh('index.php', 10);
|
||||||
bb_die($lang['TOPIC_POST_NOT_EXIST']);
|
bb_die($lang['TOPIC_POST_NOT_EXIST']);
|
||||||
}
|
}
|
||||||
|
@ -132,7 +134,7 @@ if (isset($_GET['view']) && $_GET['view'] === 'newest' && !IS_GUEST && $topic_id
|
||||||
ORDER BY post_time ASC
|
ORDER BY post_time ASC
|
||||||
LIMIT 1";
|
LIMIT 1";
|
||||||
|
|
||||||
if ($row = DB()->fetch_row($sql)) {
|
if ($row = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
$post_id = $newest = $row['post_id'];
|
$post_id = $newest = $row['post_id'];
|
||||||
$t_data['post_time'] = $row['post_time'];
|
$t_data['post_time'] = $row['post_time'];
|
||||||
}
|
}
|
||||||
|
@ -144,7 +146,7 @@ if ($post_id && !empty($t_data['post_time']) && ($t_data['topic_replies'] + 1) >
|
||||||
WHERE topic_id = $topic_id
|
WHERE topic_id = $topic_id
|
||||||
AND post_time <= {$t_data['post_time']}";
|
AND post_time <= {$t_data['post_time']}";
|
||||||
|
|
||||||
if ($row = DB()->fetch_row($sql)) {
|
if ($row = Di::getInstance()->db->fetch_row($sql)) {
|
||||||
$t_data['prev_posts'] = $row['prev_posts'];
|
$t_data['prev_posts'] = $row['prev_posts'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -225,21 +227,21 @@ if ($di->config->get('topic_notify_enabled')) {
|
||||||
if (isset($_GET['unwatch'])) {
|
if (isset($_GET['unwatch'])) {
|
||||||
if ($_GET['unwatch'] == 'topic') {
|
if ($_GET['unwatch'] == 'topic') {
|
||||||
$is_watching_topic = 0;
|
$is_watching_topic = 0;
|
||||||
DB()->query("DELETE FROM " . BB_TOPICS_WATCH . " WHERE topic_id = $topic_id AND user_id = {$userdata['user_id']}");
|
Di::getInstance()->db->query("DELETE FROM " . BB_TOPICS_WATCH . " WHERE topic_id = $topic_id AND user_id = {$userdata['user_id']}");
|
||||||
}
|
}
|
||||||
set_die_append_msg($forum_id, $topic_id);
|
set_die_append_msg($forum_id, $topic_id);
|
||||||
bb_die($lang['NO_LONGER_WATCHING']);
|
bb_die($lang['NO_LONGER_WATCHING']);
|
||||||
} else {
|
} else {
|
||||||
$is_watching_topic = true;
|
$is_watching_topic = true;
|
||||||
if (!$t_data['notify_status']) {
|
if (!$t_data['notify_status']) {
|
||||||
DB()->query("UPDATE " . BB_TOPICS_WATCH . " SET notify_status = " . TOPIC_WATCH_NOTIFIED . " WHERE topic_id = $topic_id AND user_id = {$userdata['user_id']}");
|
Di::getInstance()->db->query("UPDATE " . BB_TOPICS_WATCH . " SET notify_status = " . TOPIC_WATCH_NOTIFIED . " WHERE topic_id = $topic_id AND user_id = {$userdata['user_id']}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (isset($_GET['watch'])) {
|
if (isset($_GET['watch'])) {
|
||||||
if ($_GET['watch'] == 'topic') {
|
if ($_GET['watch'] == 'topic') {
|
||||||
$is_watching_topic = true;
|
$is_watching_topic = true;
|
||||||
DB()->query("
|
Di::getInstance()->db->query("
|
||||||
INSERT INTO " . BB_TOPICS_WATCH . " (user_id, topic_id, notify_status)
|
INSERT INTO " . BB_TOPICS_WATCH . " (user_id, topic_id, notify_status)
|
||||||
VALUES (" . $userdata['user_id'] . ", $topic_id, " . TOPIC_WATCH_NOTIFIED . ")
|
VALUES (" . $userdata['user_id'] . ", $topic_id, " . TOPIC_WATCH_NOTIFIED . ")
|
||||||
");
|
");
|
||||||
|
@ -274,12 +276,12 @@ if (!empty($_REQUEST['postdays'])) {
|
||||||
$min_post_time = TIMENOW - ($post_days * 86400);
|
$min_post_time = TIMENOW - ($post_days * 86400);
|
||||||
|
|
||||||
$sql = "SELECT COUNT(p.post_id) AS num_posts
|
$sql = "SELECT COUNT(p.post_id) AS num_posts
|
||||||
FROM " . BB_TOPICS . " t, " . BB_POSTS . " p
|
FROM bb_topics t, " . BB_POSTS . " p
|
||||||
WHERE t.topic_id = $topic_id
|
WHERE t.topic_id = $topic_id
|
||||||
AND p.topic_id = t.topic_id
|
AND p.topic_id = t.topic_id
|
||||||
AND p.post_time > $min_post_time";
|
AND p.post_time > $min_post_time";
|
||||||
|
|
||||||
$total_replies = ($row = DB()->fetch_row($sql)) ? $row['num_posts'] : 0;
|
$total_replies = ($row = Di::getInstance()->db->fetch_row($sql)) ? $row['num_posts'] : 0;
|
||||||
$limit_posts_time = "AND p.post_time >= $min_post_time ";
|
$limit_posts_time = "AND p.post_time >= $min_post_time ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -293,7 +295,7 @@ $post_order = (isset($_POST['postorder']) && $_POST['postorder'] !== 'asc') ? 'd
|
||||||
// 1. Add first post of topic if it pinned and page of topic not first
|
// 1. Add first post of topic if it pinned and page of topic not first
|
||||||
$first_post = false;
|
$first_post = false;
|
||||||
if ($t_data['topic_show_first_post'] && $start) {
|
if ($t_data['topic_show_first_post'] && $start) {
|
||||||
$first_post = DB()->fetch_rowset("
|
$first_post = Di::getInstance()->db->fetch_rowset("
|
||||||
SELECT
|
SELECT
|
||||||
u.username, u.user_id, u.user_rank, u.user_posts, u.user_from,
|
u.username, u.user_id, u.user_rank, u.user_posts, u.user_from,
|
||||||
u.user_regdate, u.user_sig,
|
u.user_regdate, u.user_sig,
|
||||||
|
@ -303,10 +305,10 @@ if ($t_data['topic_show_first_post'] && $start) {
|
||||||
u2.username as mc_username, u2.user_rank as mc_user_rank,
|
u2.username as mc_username, u2.user_rank as mc_user_rank,
|
||||||
h.post_html, IF(h.post_html IS NULL, pt.post_text, NULL) AS post_text
|
h.post_html, IF(h.post_html IS NULL, pt.post_text, NULL) AS post_text
|
||||||
FROM " . BB_POSTS . " p
|
FROM " . BB_POSTS . " p
|
||||||
LEFT JOIN " . BB_USERS . " u ON(u.user_id = p.poster_id)
|
LEFT JOIN bb_users u ON(u.user_id = p.poster_id)
|
||||||
LEFT JOIN " . BB_POSTS_TEXT . " pt ON(pt.post_id = p.post_id)
|
LEFT JOIN " . BB_POSTS_TEXT . " pt ON(pt.post_id = p.post_id)
|
||||||
LEFT JOIN " . BB_POSTS_HTML . " h ON(h.post_id = p.post_id)
|
LEFT JOIN " . BB_POSTS_HTML . " h ON(h.post_id = p.post_id)
|
||||||
LEFT JOIN " . BB_USERS . " u2 ON(u2.user_id = p.mc_user_id)
|
LEFT JOIN bb_users u2 ON(u2.user_id = p.mc_user_id)
|
||||||
LEFT JOIN " . BB_GROUPS . " g ON(g.group_id = p.poster_rg_id)
|
LEFT JOIN " . BB_GROUPS . " g ON(g.group_id = p.poster_rg_id)
|
||||||
WHERE
|
WHERE
|
||||||
p.post_id = {$t_data['topic_first_post_id']}
|
p.post_id = {$t_data['topic_first_post_id']}
|
||||||
|
@ -324,10 +326,10 @@ $sql = "
|
||||||
u2.username as mc_username, u2.user_rank as mc_user_rank,
|
u2.username as mc_username, u2.user_rank as mc_user_rank,
|
||||||
h.post_html, IF(h.post_html IS NULL, pt.post_text, NULL) AS post_text
|
h.post_html, IF(h.post_html IS NULL, pt.post_text, NULL) AS post_text
|
||||||
FROM " . BB_POSTS . " p
|
FROM " . BB_POSTS . " p
|
||||||
LEFT JOIN " . BB_USERS . " u ON(u.user_id = p.poster_id)
|
LEFT JOIN bb_users u ON(u.user_id = p.poster_id)
|
||||||
LEFT JOIN " . BB_POSTS_TEXT . " pt ON(pt.post_id = p.post_id)
|
LEFT JOIN " . BB_POSTS_TEXT . " pt ON(pt.post_id = p.post_id)
|
||||||
LEFT JOIN " . BB_POSTS_HTML . " h ON(h.post_id = p.post_id)
|
LEFT JOIN " . BB_POSTS_HTML . " h ON(h.post_id = p.post_id)
|
||||||
LEFT JOIN " . BB_USERS . " u2 ON(u2.user_id = p.mc_user_id)
|
LEFT JOIN bb_users u2 ON(u2.user_id = p.mc_user_id)
|
||||||
LEFT JOIN " . BB_GROUPS . " g ON(g.group_id = p.poster_rg_id)
|
LEFT JOIN " . BB_GROUPS . " g ON(g.group_id = p.poster_rg_id)
|
||||||
WHERE p.topic_id = $topic_id
|
WHERE p.topic_id = $topic_id
|
||||||
$limit_posts_time
|
$limit_posts_time
|
||||||
|
@ -336,7 +338,7 @@ $sql = "
|
||||||
LIMIT $start, $posts_per_page
|
LIMIT $start, $posts_per_page
|
||||||
";
|
";
|
||||||
|
|
||||||
if ($postrow = DB()->fetch_rowset($sql)) {
|
if ($postrow = Di::getInstance()->db->fetch_rowset($sql)) {
|
||||||
if ($first_post) {
|
if ($first_post) {
|
||||||
$postrow = array_merge($first_post, $postrow);
|
$postrow = array_merge($first_post, $postrow);
|
||||||
}
|
}
|
||||||
|
@ -498,7 +500,7 @@ require(INC_DIR . 'torrent_show_dl_list.php');
|
||||||
// Update the topic view counter
|
// Update the topic view counter
|
||||||
//
|
//
|
||||||
$sql = "INSERT INTO " . BUF_TOPIC_VIEW . " (topic_id, topic_views) VALUES ($topic_id, 1) ON DUPLICATE KEY UPDATE topic_views = topic_views + 1";
|
$sql = "INSERT INTO " . BUF_TOPIC_VIEW . " (topic_id, topic_views) VALUES ($topic_id, 1) ON DUPLICATE KEY UPDATE topic_views = topic_views + 1";
|
||||||
if (!DB()->sql_query($sql)) {
|
if (!Di::getInstance()->db->sql_query($sql)) {
|
||||||
bb_die('Could not update topic views');
|
bb_die('Could not update topic views');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue