Files
nexusphp/classes/class_attachment.php
xiaomlove a3ba82be64 init
2020-12-26 01:42:23 +08:00

190 lines
4.9 KiB
PHP

<?php
class ATTACHMENT{
var $userid;
var $class;
var $countlimit;
var $countsofar=0;
var $sizelimit;
var $allowedext = array();
function __construct($userid) {
$this->userid = $userid;
$this->set_class();
$this->set_count_so_far();
$this->set_count_limit();
$this->set_size_limit();
$this->set_allowed_ext();
}
function enable_attachment()
{
global $enableattach_attachment;
if ($enableattach_attachment == 'yes')
return true;
else return false;
}
function set_class()
{
$userid = $this->userid;
$row = get_user_row($userid);
$this->class = $row['class'];
}
function set_count_so_far()
{
$userid = $this->userid;
$now = date("Y-m-d H:i:s", TIMENOW-86400);
$countsofar = get_row_count("attachments", "WHERE userid=".sqlesc($userid)." AND added > ".sqlesc($now));
$this->countsofar = $countsofar;
}
function get_count_so_far()
{
return $this->countsofar;
}
function get_count_limit_class($class)
{
global $classone_attachment, $classtwo_attachment, $classthree_attachment, $classfour_attachment,$countone_attachment, $counttwo_attachment, $countthree_attachment, $countfour_attachment;
if ($class >= $classfour_attachment && $countfour_attachment)
return $countfour_attachment;
elseif ($class >= $classthree_attachment && $countthree_attachment)
return $countthree_attachment;
elseif ($class >= $classtwo_attachment && $counttwo_attachment)
return $counttwo_attachment;
elseif ($class >= $classone_attachment && $countone_attachment)
return $countone_attachment;
}
function set_count_limit()
{
$class = $this->class;
$countlimit = $this->get_count_limit_class($class);
$this->countlimit = $countlimit;
}
function get_count_limit()
{
return $this->countlimit;
}
function get_count_left()
{
$left = $this->countlimit - $this->countsofar;
return $left;
}
function get_size_limit_class($class)
{
global $classone_attachment, $classtwo_attachment, $classthree_attachment, $classfour_attachment,$sizeone_attachment, $sizetwo_attachment, $sizethree_attachment, $sizefour_attachment;
if ($class >= $classfour_attachment && $sizefour_attachment)
return $sizefour_attachment;
elseif ($class >= $classthree_attachment && $sizethree_attachment)
return $sizethree_attachment;
elseif ($class >= $classtwo_attachment && $sizetwo_attachment)
return $sizetwo_attachment;
elseif ($class >= $classone_attachment && $sizeone_attachment)
return $sizeone_attachment;
}
function set_size_limit()
{
$class = $this->class;
$sizelimit = $this->get_size_limit_class($class);
$this->sizelimit = $sizelimit;
}
function get_size_limit_kb()
{
return $this->sizelimit;
}
function get_size_limit_byte()
{
return $this->sizelimit * 1024;
}
function get_allowed_ext_class($class)
{
global $classone_attachment, $classtwo_attachment, $classthree_attachment, $classfour_attachment,$extone_attachment, $exttwo_attachment, $extthree_attachment, $extfour_attachment;
$allowedext = array();
if ($class >= $classone_attachment){
$temprow = $this->extract_allowed_ext($extone_attachment);
if (count($temprow)){
foreach ($temprow as $temp){
$allowedext[] = $temp;
}
}
if ($class >= $classtwo_attachment){
$temprow = $this->extract_allowed_ext($exttwo_attachment);
if (count($temprow)){
foreach ($temprow as $temp){
$allowedext[] = $temp;
}
}
if ($class >= $classthree_attachment){
$temprow = $this->extract_allowed_ext($extthree_attachment);
if (count($temprow)){
foreach ($temprow as $temp){
$allowedext[] = $temp;
}
}
if ($class >= $classfour_attachment){
$temprow = $this->extract_allowed_ext($extfour_attachment);
if (count($temprow)){
foreach ($temprow as $temp){
$allowedext[] = $temp;
}
}
}
}
}
}
return $allowedext;
}
function set_allowed_ext()
{
$class = $this->class;
$allowedext = $this->get_allowed_ext_class($class);
$this->allowedext = $allowedext;
}
function get_allowed_ext()
{
return $this->allowedext;
}
function extract_allowed_ext($string)
{
$string = rtrim(trim($string), ",");
$exts = explode(",", $string);
$extrow = array();
foreach ($exts as $ext){
$extrow[] = trim($ext);
}
return $extrow;
}
function is_gif_ani($filename) {
if(!($fh = @fopen($filename, 'rb')))
return false;
$count = 0;
//an animated gif contains multiple "frames", with each frame having a
//header made up of:
// * a static 4-byte sequence (\x00\x21\xF9\x04)
// * 4 variable bytes
// * a static 2-byte sequence (\x00\x2C)
// We read through the file til we reach the end of the file, or we've found
// at least 2 frame headers
while(!feof($fh) && $count < 2){
$chunk = fread($fh, 1024 * 100); //read 100kb at a time
$count += preg_match_all('#\x00\x21\xF9\x04.{4}\x00\x2C#s', $chunk, $matches);
}
return $count > 1;
}
}
?>