mirror of
https://github.com/SWG-Source/auth-site.git
synced 2026-07-13 22:01:16 -04:00
126 lines
2.8 KiB
PHP
126 lines
2.8 KiB
PHP
<?php
|
|
/**
|
|
* MyBB 1.8
|
|
* Copyright 2014 MyBB Group, All Rights Reserved
|
|
*
|
|
* Website: http://www.mybb.com
|
|
* License: http://www.mybb.com/about/license
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* @param resource|PDOStatement|mysqli_result $query The query to be run. Needs to select the "action" column of the "warninglevels" table
|
|
* @param array $max_expiration_times Return variable. The maximum expiration time
|
|
* @param array $check_levels Return variable. Whether those "levels" were checked
|
|
*/
|
|
function find_warnlevels_to_check($query, &$max_expiration_times, &$check_levels)
|
|
{
|
|
global $db;
|
|
|
|
// we have some warning levels we need to revoke
|
|
$max_expiration_times = array(
|
|
1 => -1, // Ban
|
|
2 => -1, // Revoke posting
|
|
3 => -1 // Moderate posting
|
|
);
|
|
$check_levels = array(
|
|
1 => false, // Ban
|
|
2 => false, // Revoke posting
|
|
3 => false // Moderate posting
|
|
);
|
|
while($warn_level = $db->fetch_array($query))
|
|
{
|
|
// revoke actions taken at this warning level
|
|
$action = my_unserialize($warn_level['action']);
|
|
if($action['type'] < 1 || $action['type'] > 3) // prevent any freak-ish cases
|
|
{
|
|
continue;
|
|
}
|
|
|
|
$check_levels[$action['type']] = true;
|
|
|
|
$max_exp_time = &$max_expiration_times[$action['type']];
|
|
if($action['length'] && $max_exp_time != 0)
|
|
{
|
|
$expiration = $action['length'];
|
|
if($expiration > $max_exp_time)
|
|
{
|
|
$max_exp_time = $expiration;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$max_exp_time = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns a friendly expiration time of a suspension/warning
|
|
*
|
|
* @param int $time The time period of the suspension/warning
|
|
* @return array An array of the time/period remaining
|
|
*/
|
|
function fetch_friendly_expiration($time)
|
|
{
|
|
if($time == 0 || $time == -1)
|
|
{
|
|
return array("period" => "never");
|
|
}
|
|
else if($time % 2592000 == 0)
|
|
{
|
|
return array("time" => $time/2592000, "period" => "months");
|
|
}
|
|
else if($time % 604800 == 0)
|
|
{
|
|
return array("time" => $time/604800, "period" => "weeks");
|
|
}
|
|
else if($time % 86400 == 0)
|
|
{
|
|
return array("time" => $time/86400, "period" => "days");
|
|
}
|
|
else
|
|
{
|
|
return array("time" => ceil($time/3600), "period" => "hours");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Figures out the length of a suspension/warning
|
|
*
|
|
* @param int $time The amount of time to calculate the length of suspension/warning
|
|
* @param string $period The period of time to calculate the length of suspension/warning
|
|
* @return int Length of the suspension/warning (in seconds)
|
|
*/
|
|
function fetch_time_length($time, $period)
|
|
{
|
|
$time = (int)$time;
|
|
|
|
if($period == "hours")
|
|
{
|
|
$time = $time*3600;
|
|
}
|
|
else if($period == "days")
|
|
{
|
|
$time = $time*86400;
|
|
}
|
|
else if($period == "weeks")
|
|
{
|
|
$time = $time*604800;
|
|
}
|
|
else if($period == "months")
|
|
{
|
|
$time = $time*2592000;
|
|
}
|
|
else if($period == "never" && $time == 0)
|
|
{
|
|
// User is permanentely banned
|
|
$time = "-1";
|
|
}
|
|
else
|
|
{
|
|
$time = 0;
|
|
}
|
|
return $time;
|
|
}
|