torrentpier/library/includes/cron/jobs/tr_seed_bonus.php
2024-09-27 18:32:23 +07:00

72 lines
2.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2024 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
if (!defined('BB_ROOT')) {
die(basename(__FILE__));
}
DB()->expect_slow_query(600);
if ($bb_cfg['seed_bonus_enabled'] && $bb_cfg['seed_bonus_points'] && $bb_cfg['seed_bonus_release']) {
DB()->query("
CREATE TEMPORARY TABLE tmp_bonus (
user_id INT UNSIGNED NOT NULL DEFAULT '0',
release_count INT UNSIGNED NOT NULL DEFAULT '0'
) ENGINE = MEMORY
");
$tor_size = ($bb_cfg['seed_bonus_tor_size'] * 1073741824);
DB()->query("INSERT INTO tmp_bonus
SELECT bt.user_id, count(bt.seeder) AS release_count
FROM " . BB_BT_TRACKER . " bt, " . BB_BT_TORRENTS . " tor
WHERE tor.topic_id = bt.topic_id
AND tor.size > $tor_size
AND bt.seeder > 0
GROUP BY user_id
");
$seed_bonus = unserialize($bb_cfg['seed_bonus_points']);
$seed_release = unserialize($bb_cfg['seed_bonus_release']);
$sql = "SELECT last_run
FROM " . BB_CRON . "
WHERE cron_script = '" . basename(__FILE__) . "'
LIMIT 1";
$cron_runs = DB()->fetch_row($sql);
$cron_job_last_run = (TIMENOW - strtotime($cron_runs['last_run']));
foreach ($seed_bonus as $i => $points) {
if (!$points || !$seed_release[$i]) {
continue;
}
$user_points = ($cron_job_last_run < 3600) ? round((float)$points * ($cron_job_last_run / 3600), 2) : 0;
$release = (int)$seed_release[$i];
$user_regdate = (TIMENOW - $bb_cfg['seed_bonus_user_regdate'] * 86400);
DB()->query("
UPDATE " . BB_USERS . " u, " . BB_BT_USERS . " bu, tmp_bonus b
SET
u.user_points = u.user_points + '$user_points',
bu.points_today = bu.points_today + '$user_points',
b.user_id = 0
WHERE
b.user_id = u.user_id
AND bu.user_id = u.user_id
AND b.release_count <= $release
AND u.user_regdate < $user_regdate
AND u.user_active = 1
AND u.user_id not IN(" . EXCLUDED_USERS . ")
");
}
DB()->query("DROP TEMPORARY TABLE IF EXISTS tmp_bonus");
}