All pastes #2048408 Raw Edit

Mine

public text v1 · immutable
#2048408 ·published 2011-04-19 20:13 UTC
rendered paste body
<?

require_once("bittorrent.php");
require_once("bonus_settings.php");

$seed_bonus=$bonus_settings['seed'];
$res = mysql_query("UPDATE `temp` SET `sb` = '$seed_bonus'") or sqlerr(__FILE__, __LINE__);

function docleanup() {

	global $torrent_dir, $signup_timeout, $max_dead_torrent_time, $autoclean_interval;

	set_time_limit(0);
	ignore_user_abort(1);
/*	do {
		$res = mysql_query("SELECT id FROM torrents");
		$ar = array();
		while ($row = mysql_fetch_array($res)) {
			$id = $row[0];
			$ar[$id] = 1;
		}
		if (!count($ar))
			break;
		$dp = @opendir($torrent_dir);
		if (!$dp)
			break;
		$ar2 = array();
			while (($file = readdir($dp)) !== false) {
				if (!preg_match('/^(\d+)\.dev_torrent$/', $file, $m))
					continue;
				$id = $m[1];
				$ar2[$id] = 1;
				if (isset($ar[$id]) && $ar[$id])
					continue;
				$ff = $dev_torrent_dir . "/$file";
				unlink($ff);
			}
			closedir($dp);
			if (!count($ar2))
				break;
			$delids = array();
			foreach (array_keys($ar) as $k) {
				if (isset($ar2[$k]) && $ar2[$k])
					continue;
				$delids[] = $k;
				unset($ar[$k]);
			}
			if (count($delids))
				mysql_query("DELETE FROM torrents WHERE id IN (" . join(",", $delids) . ")");
				$res = mysql_query("SELECT torrent FROM peers GROUP BY torrent");
				$delids = array();
				while ($row = mysql_fetch_array($res)) {
					$id = $row[0];
					if (isset($ar[$id]) && $ar[$id])
						continue;
					$delids[] = $id;
		}
			if (count($delids))
				mysql_query("DELETE FROM peers WHERE torrent IN (" . join(",", $delids) . ")");
			$res = mysql_query("SELECT torrent FROM files GROUP BY torrent");
			$delids = array();
			while ($row = mysql_fetch_array($res)) {
				$id = $row[0];
				if ($ar[$id])
					continue;
				$delids[] = $id;
			}
			if (count($delids))
				mysql_query("DELETE FROM files WHERE torrent IN (" . join(",", $delids) . ")");
	} while (0); */

	//Mark torrent as dead
	$deadtime = $max_dead_torrent_time;
	mysql_query("UPDATE torrents SET visible='no' WHERE visible='yes' AND last_action < FROM_UNIXTIME($deadtime)");

	// delete old torrents
//	$days = 7;
//	$dt = sqlesc(get_date_time(gmtime() - ($days * 86400)));
//	$res = mysql_query("SELECT id, name FROM torrents WHERE last_action < $dt and seeders = '0' and leechers = '0'");
//	while ($arr = mysql_fetch_assoc($res)) {
//		@unlink("$dev_torrent_dir/$arr[id].torrent");
//		mysql_query("DELETE FROM torrents WHERE id=$arr[id]");
//		mysql_query("DELETE FROM peers WHERE torrent=$arr[id]");
//		mysql_query("DELETE FROM comments WHERE torrent=$arr[id]");
//    	mysql_query("DELETE FROM bookmarks WHERE torrentid = $id");
//		mysql_query("DELETE FROM files WHERE torrent=$arr[id]");
//		mysql_query("DELETE FROM snatched WHERE torrentid=$arr[id]");
//		write_log("Torrent $arr[id] ($arr[name]) was deleted by system (no seeders and leechers)","Torrent");
//	}

	//Remove dead peers and set snatched seeder to no
	$deadtime = deadtime();
	mysql_query("DELETE FROM peers WHERE last_action < FROM_UNIXTIME($deadtime)");
	mysql_query("UPDATE snatched SET seeder='no' WHERE seeder='yes' AND last_action < FROM_UNIXTIME($deadtime)");

	//Delete unconfirmed users
	$deadtime = gmtime() - $signup_timeout;
	mysql_query("DELETE FROM users WHERE status = 'pending' AND added < FROM_UNIXTIME($deadtime) AND last_login < FROM_UNIXTIME($deadtime) AND last_access < FROM_UNIXTIME($deadtime)");


	//Remove 1 Week old Dealt With Reports
	$secs = 604800;
	$dt = sqlesc(get_date_time(gmtime() - $secs));
	mysql_query("DELETE FROM reports WHERE added < $dt AND dealtwith=1");

	//Remove Old Shoutbox Posts
	$secs = 86400 * 4; //4 days
	$dt = sqlesc(gmtime() - $secs);
	mysql_query("DELETE FROM shoutbox WHERE date < $dt");

// delete old regimage codes
    $secs = 1 * 86400;
    $dt = time() - $secs;
    mysql_query("DELETE FROM captcha WHERE dateline < $dt") or sqlerr(__FILE__,__LINE__);


//Set torrent stats
$torrents = array();
$res = mysql_query("SELECT torrent, seeder, COUNT(*) AS c FROM peers GROUP BY torrent, seeder");
while ($row = mysql_fetch_assoc($res)) {
	if ($row["seeder"] == "yes")
		$key = "seeders";
	else
		$key = "leechers";
	$torrents[$row["torrent"]][$key] = $row["c"];
}

$res = mysql_query("SELECT torrent, COUNT(*) AS c FROM comments GROUP BY torrent");
while ($row = mysql_fetch_assoc($res)) {
	$torrents[$row["torrent"]]["comments"] = $row["c"];
}

$fields = explode(":", "comments:leechers:seeders");
$res = mysql_query("SELECT id, seeders, leechers, comments FROM torrents");
while ($row = mysql_fetch_assoc($res)) {
	$id = $row["id"];
	$torr = $torrents[$id];
	foreach ($fields as $field) {
		if (!isset($torr[$field]))
			$torr[$field] = 0;
	}
	$update = array();
	foreach ($fields as $field) {
		if ($torr[$field] != $row[$field])
			$update[] = "$field = " . $torr[$field];
	}
	if (count($update))
		mysql_query("UPDATE torrents SET " . implode(",", $update) . " WHERE id = $id");
}
//---------------------------------
//---- Login Attempts v0.1 by xam
//---------------------------------

    //delete old login attempts
    $secs = 1*86400; // Delete failed login attempts per one day.
    $dt = sqlesc(get_date_time(gmtime() - $secs)); // calculate date.
    mysql_query("DELETE FROM loginattempts WHERE banned='no' AND added < $dt"); // do job.

//---------------------------------
//---- Login Attempts v0.1 by xam
//---------------------------------

//==Disabled inactive users
    $days = 90; //==days of inactivity
          $dt= time() - ($days * 86400);
    $res = mysql_query("SELECT id, modcomment, last_access FROM users WHERE last_access < $dt AND enabled='yes' AND donor='no'") or sqlerr(__FILE__, __LINE__);
    if (mysql_num_rows($res) > 0) {
        while ($arr = mysql_fetch_assoc($res)) {
            $modcomment = sqlesc(get_date( time(), 'DATE', 1 ) . " - Auto-disabled for inactivity By System\n");
            $users_buffer[] = '(' . $arr['id'] . ', \'no\', ' . $modcomment . ')';
        }
        if (sizeof($users_buffer) > 0) {
            @mysql_query("INSERT INTO users (id, enabled, modcomment) VALUES " . implode(', ', $users_buffer) . " ON DUPLICATE key UPDATE enabled=values(enabled),
            modcomment=concat(values(modcomment),modcomment)") or sqlerr(__FILE__, __LINE__);
            $count = mysql_affected_rows();
            write_log("Cleanup:  Disabled " . $count . " Member(s) for inactivity");
        }
        unset ($users_buffer);
    }
    //==End


//remove expired warnings
$res = mysql_query("SELECT id FROM users WHERE warned=1 AND warneduntil < NOW() AND warneduntil <> '0000-00-00 00:00:00'") or sqlerr(__FILE__, __LINE__);
if (mysql_num_rows($res) > 0)   {
	$dt = sqlesc(get_date_time());
	$msg = sqlesc("Your warning has been removed. Please keep in your best behaviour from now on.\n");
	while ($arr = mysql_fetch_assoc($res)) {
		mysql_query("UPDATE users SET warned = 0, warneduntil = '0000-00-00 00:00:00' WHERE id = $arr[id]") or sqlerr(__FILE__, __LINE__);
		mysql_query("INSERT INTO messages (sender, receiver, added, msg, poster) VALUES(0, $arr[id], $dt, $msg, 0)") or sqlerr(__FILE__, __LINE__);
	}
}

// Update stats
$seeders = get_row_count("peers", "WHERE seeder='yes'");
$leechers = get_row_count("peers", "WHERE seeder='no'");
mysql_query("UPDATE avps SET value_u=$seeders WHERE arg='seeders'") or sqlerr(__FILE__, __LINE__);
mysql_query("UPDATE avps SET value_u=$leechers WHERE arg='leechers'") or sqlerr(__FILE__, __LINE__);

//Delete 30 day Old PMs
$secs = 2592000;
$dt = sqlesc(get_date_time(gmtime() - $secs));
mysql_query("DELETE FROM messages WHERE added < $dt");

//Delete 30 day old unfilled requests
$secs = 2592000;
$dt = sqlesc(get_date_time(gmtime() - $secs));
mysql_query("DELETE FROM requests WHERE added < $dt AND filledby=0");

// update forum post/topic count
$forums = mysql_query("select id from forums");
while ($forum = mysql_fetch_assoc($forums)) {
	$postcount = 0;
	$topiccount = 0;
	$topics = mysql_query("select id from topics where forumid=$forum[id]");
	while ($topic = mysql_fetch_assoc($topics)) {
		$res = mysql_query("select count(*) from posts where topicid=$topic[id]");
		$arr = mysql_fetch_row($res);
		$postcount += $arr[0];
		++$topiccount;
	}
	mysql_query("update forums set postcount=$postcount, topiccount=$topiccount where id=$forum[id]");
}

//Update Active Users
$dt = gmtime() - 180;
$dt = sqlesc(get_date_time($dt));

$sql = 'SELECT id, username, class,donor,warned FROM users WHERE last_access >= '.$dt.' ORDER BY username';
$res = mysql_query($sql);

$output = '';
while($row = mysql_fetch_assoc($res)) {
        $output .= $row['id'].' '.$row['username'].' '.$row['class'].' '.$row['donor'].' '.$row['warned']."\n";
}
$fh = @fopen("/home/pat/proaudiotorrents.org/public_html/cache-online.txt","w");
@fputs ($fh,"$output\n");
@fclose ($fh);

// Promote Users

	$resap = mysql_query("SELECT * FROM classes where autolevel='yes' ORDER by class DESC");
	while ($arrap = mysql_fetch_array($resap)) {
		$minjoin = sqlesc(get_date_time(gmtime() - $arrap[mintime]));
		$minupload = $arrap["minupload"];
		$maxupload = $arrap["maxupload"];
		$minratio = $arrap["minratio"];
		$class = $arrap["class"];
		$msg = sqlesc("Congratulations, you have been auto-promoted to [b]" . $arrap["classname"] . "[/b]. :)\n You must keep your ratio above $arrap[minratio] to keep this class");
		$res = mysql_query("SELECT id, username  FROM users WHERE class < $class AND uploaded >= $minupload AND uploaded / downloaded >= $minratio");
		if (mysql_num_rows($res) > 0) {
			while ($arr = mysql_fetch_assoc($res)) {
				$dt = sqlesc(get_date_time());
				$text = sqlesc("\n" . get_date_time() . " Auto Promoted to $arrap[classname]");
				mysql_query("UPDATE users SET class = $arrap[class], invites = $arrap[invites], modcomment=CONCAT(modcomment,$text) WHERE id = $arr[id]") or sqlerr(__FILE__, __LINE__);
				mysql_query("INSERT INTO messages (sender, receiver, added, msg, poster) VALUES(0, $arr[id], $dt, $msg, 0)") or sqlerr(__FILE__, __LINE__);
//	            status_change($arr['id']);


			}
		}
	}

//Demote Users
	$resap = mysql_query("SELECT * FROM classes where autolevel='yes'");
	while ($arrap = mysql_fetch_array($resap)) {

			$res = mysql_query("SELECT id FROM users WHERE class = " . $arrap["class"] . " AND uploaded / downloaded < " . $arrap["minratio"] . " AND donor='no'") or sqlerr(__FILE__, __LINE__);
			if (mysql_num_rows($res) > 0) {
				$dt = sqlesc(get_date_time());
				$msg = sqlesc("You have been auto-demoted from " . $arrap["classname"] . " to " . get_user_class_name($arrap["demoteclass"]) ." because your share ratio has dropped below " . $arrap["minratio"]);
				while ($arr = mysql_fetch_assoc($res)) {
					mysql_query("UPDATE users SET class = $arrap[demoteclass] WHERE id = $arr[id]") or sqlerr(__FILE__, __LINE__);
					mysql_query("INSERT INTO messages (sender, receiver, added, msg, poster) VALUES(0, $arr[id], $dt, $msg, 0)") or sqlerr(__FILE__, __LINE__);
//		            status_change($arr['id']);
				}
			}
	}



// give some bonus to the people that seed
	//read the bonus setting - had to be done this way, for some reason, i couldn't retrieve the info from the array (yes, I tried setting it as global)
	$res = mysql_query("SELECT * FROM `temp`") or sqlerr(__FILE__, __LINE__);
	while ($arr = mysql_fetch_assoc($res)){
		$seed_bonus=$arr['sb'];
	}
	$seed_bonus=number_format(($seed_bonus/4),3);
	mysql_query("UPDATE `temp` SET `sb` = '$seed_bonus'");
	//get everyone that seeds
   $res = mysql_query("SELECT DISTINCT userid FROM peers WHERE seeder = 'yes'") or sqlerr(__FILE__, __LINE__);
   if (mysql_num_rows($res) > 0)
   {
       while ($arr = mysql_fetch_assoc($res))
       {
		$seedbonus_user_id=$arr['userid'];
		//.. get the amount of torrents seeded
		$sql_result = mysql_query("SELECT * FROM `peers` WHERE `seeder` = 'yes' AND `userid` = $seedbonus_user_id");
		$num_torrents_seeded=number_format(mysql_num_rows($sql_result),3);
		$seed_bonus_applied=$seed_bonus*$num_torrents_seeded;
		//echo $seedbonus_user_id.' | '.$num_torrents_seeded.' | '.$seed_bonus_applied.'<br>';
		mysql_query("UPDATE users SET seedbonus = seedbonus+$seed_bonus_applied WHERE id = $seedbonus_user_id");
		//mysql_query("UPDATE `temp` SET `sb` = '$num_torrents_seeded'");
		//.. give proper bonus
       }
   }


// WARNINGS
        function autowarn($length, $limit, $minratio)
        {
                $msg = sqlesc("This is an automatic warning because your share ratio is too low at this moment.\n\nYou have " . $length . " days to higher your share ratio, read the rules to see what your ratio must be.\nIf your share ratio is too low after these 5 days your downloading  priviliges will be disabled then you will have another 5 days to improv your ratio if you still fail to do so your account might be banned permanently!");
				$until = sqlesc(get_date_time(gmtime() + (($length+1)*86400)));
                $dt = sqlesc(get_date_time());
                $limit = $limit *1024*1024*1024;
	        $res = mysql_query("SELECT id,ip FROM users WHERE  class <= " .  UC_VIP . " AND enabled = 'yes' AND downloaded > $limit AND uploaded / downloaded < $minratio and warned = 0") or sqlerr(__FILE__, __LINE__);
		while ($arr = mysql_fetch_assoc($res))
		{
			mysql_query("UPDATE users SET permban = 'yes', warned = 1, warneduntil = ".$until." WHERE id=$arr[id]") or sqlerr(__FILE__, __LINE__);
			mysql_query("INSERT INTO messages (sender, receiver, added, msg, poster) VALUES(0, $arr[id], $dt, $msg, 0)") or sqlerr(__FILE__, __LINE__);
		}
        }

	autowarn(5,4,0.10);
	autowarn(5,10,0.20);
	autowarn(5,20,0.30);
	autowarn(5,30,0.40);
    autowarn(5,40,0.50);
    autowarn(5,50,0.60);
    autowarn(5,60,0.65);


	//AUTO-BAN and unban
        function autoban($length, $limit, $minratio, $nextlimit)
        {
                $res = mysql_query("SELECT id,ip FROM users WHERE  class <= " .  UC_VIP . " AND warned = 1 AND warneduntil < $length AND enabled = 'yes' AND downloaded > $limit AND uploaded / downloaded < $minratio") or sqlerr(__FILE__,__LINE__);
                while ($arr = mysql_fetch_assoc($res)) {
	                mysql_query("UPDATE users SET downloadpos='no' WHERE id=$arr[id]") or sqlerr(__FILE__, __LINE__);

                }

				$res2 = mysql_query("SELECT id,ip FROM users WHERE  class <= " .  UC_VIP . " AND downloadpos = 'no' AND enabled = 'yes' AND downloaded < $nextlimit AND uploaded / downloaded >= $minratio") or sqlerr(__FILE__,__LINE__);
                while ($arr2 = mysql_fetch_assoc($res2)) {
	                mysql_query("UPDATE users SET downloadpos='yes' WHERE id=$arr2[id]") or sqlerr(__FILE__, __LINE__);

                }
        }

        $secs = 1*86400; // 1 day
        $length = sqlesc(get_date_time(gmtime() + $secs)); // less than 1 day of warning left

        autoban($length, 4*1024*1024*1024, 0.10, 10*1024*1024*1024);
        autoban($length, 10*1024*1024*1024, 0.20, 20*1024*1024*1024);
        autoban($length, 20*1024*1024*1024, 0.30, 30*1024*1024*1024);
        autoban($length, 30*1024*1024*1024, 0.40, 40*1024*1024*1024);
        autoban($length, 40*1024*1024*1024, 0.50, 50*1024*1024*1024);
        autoban($length, 50*1024*1024*1024, 0.60, 60*1024*1024*1024);
        autoban($length, 60*1024*1024*1024, 0.65, 99*1024*1024*1024*1024*1024);
}

?>