'php版本太低啦,请先升级php到5.3以上,建议使用php5.4及以上',
'step_env_check_desc' => '环境以及文件目录权限检查',
'advice_mysql_connect' => '请检查 mysql 模块是否正确加载',
'advice_gethostbyname' => '是否 PHP 配置中禁止了 gethostbyname 函数。请联系空间商,确定开启了此项功能',
'advice_file_get_contents' => '该函数需要 php.ini 中 allow_url_fopen 选项开启。请联系空间商,确定开启了此项功能',
'advice_xml_parser_create' => '该函数需要 PHP 支持 XML。请联系空间商,确定开启了此项功能',
'advice_fsockopen' => '该函数需要 php.ini 中 allow_url_fopen 选项开启。请联系空间商,确定开启了此项功能',
'advice_pfsockopen' => '该函数需要 php.ini 中 allow_url_fopen 选项开启。请联系空间商,确定开启了此项功能',
'advice_stream_socket_client' => '是否 PHP 配置中禁止了 stream_socket_client 函数',
'advice_curl_init' => '是否 PHP 配置中禁止了 curl_init 函数',
'advice_mysql' => '请检查 mysql 模块是否正确加载',
'advice_fopen' => '该函数需要 php.ini 中 allow_url_fopen 选项开启。请联系空间商,确定开启了此项功能',
'advice_xml' => '该函数需要 PHP 支持 XML。请联系空间商,确定开启了此项功能',
);
$filesock_items = array('fsockopen', 'pfsockopen', 'stream_socket_client');
$env_items = array
(
'操作系统' => array('c' => 'PHP_OS', 'r' => '不限制', 'b' => 'Linux'),
'PHP 版本' => array('c' => 'PHP_VERSION', 'r' => '7+', 'b' => 'php7+'),
'附件上传' => array('r' => '不限制', 'b' => '50M'),
'GD 库' => array('r' => '1.0', 'b' => '2.0'),
'磁盘空间' => array('r' => '50M', 'b' => '10G以上'),
'MySQL数据库持续连接' => array('r' => '', 'b' => ''),
'域名' => array('r' => '', 'b' => ''),
'服务器端口' => array('r' => '不限制', 'b' => '不限制'),
'运行环境' => array('r' => '不限制', 'b' => '不限制'),
'网站根目录' => array('r' => '', 'b' => ''),
'PHP 平台版本' => array('r' => '32位', 'b' => '64位'),
'执行时间限制' => array('r' => '不限制', 'b' => '不限制'),
);
foreach($env_items as $key => $item) {
if($key == 'PHP 版本') {
$env_items[$key]['current'] = PHP_VERSION;
} elseif($key == '附件上传') {
$env_items[$key]['current'] = @ini_get('file_uploads') ? ini_get('upload_max_filesize') : 'unknow';
} elseif($key == 'allow_url_fopen') {
$env_items[$key]['current'] = @ini_get('allow_url_fopen') ? ini_get('allow_url_fopen') : 'unknow';
} elseif($key == 'GD 库') {
$tmp = function_exists('gd_info') ? gd_info() : array();
$env_items[$key]['current'] = empty($tmp['GD Version']) ? 'noext' : $tmp['GD Version'];
unset($tmp);
} elseif($key == '磁盘空间') {
if(function_exists('disk_free_space')) {
$env_items[$key]['current'] = floor(disk_free_space(ROOT_PATH) / (1024*1024)).'M';
} else {
$env_items[$key]['current'] = 'unknow';
}
} elseif($key == 'PHP 平台版本') {
if (PHP_INT_SIZE === 4) {
$env_items[$key]['current'] ='32位';
} else if (PHP_INT_SIZE === 8) {
$env_items[$key]['current'] ='64位';
} else {
$env_items[$key]['current'] ='无法确定架构类型';
}
}elseif($key == 'MySQL数据库持续连接') {
$env_items[$key]['current'] = @get_cfg_var("mysql.allow_persistent")?"是 ":"否";
} elseif($key == '域名') {
$env_items[$key]['current'] = GetHostByName($_SERVER['SERVER_NAME']);
} elseif($key == '服务器端口') {
$env_items[$key]['current'] = $_SERVER['SERVER_PORT'];
} elseif($key == '运行环境') {
$env_items[$key]['current'] = $_SERVER["SERVER_SOFTWARE"];
} elseif($key == '网站根目录') {
$env_items[$key]['current'] = $_SERVER["DOCUMENT_ROOT"];
} elseif($key == '执行时间限制') {
$env_items[$key]['current'] = ini_get('max_execution_time').'秒';
}
elseif(isset($item['c'])) {
$env_items[$key]['current'] = constant($item['c']);
}
$env_items[$key]['status'] = 1;
if($item['r'] != 'notset' && strcmp($env_items[$key]['current'], $item['r']) < 0) {
$env_items[$key]['status'] = 0;
}
}
foreach($env_items as $key => $item) {
$status = 1;
$env_str .= "
\n";
$env_str .= "| $key | \n";
$env_str .= "$item[r] | \n";
$env_str .= "$item[b] | \n";
$env_str .= ($status ? "" : " | ").$item['current']." | \n";
$env_str .= "
\n";
}
if($env_str){
echo "环境检查
\n";
echo "\n";
echo "\n";
echo "\t| 项目 | \n";
echo "\tDzzOffice 所需配置 | \n";
echo "\tDzzOffice 最佳 | \n";
echo "\t当前服务器 | \n";
echo "
\n";
echo $env_str;
echo "
\n";
}
}
function kuozhan(){
if(function_exists('mysqli_connect')) $func_items = array('mysqli_connect', 'file_get_contents', 'xml_parser_create','filesize', 'curl_init','zip_open','ffmpeg','imagick','imagemagick','cURL','date','Exif','Fileinfo','Ftp','GD','gettext','intl','Iconv','json','ldap','Mbstring','Mcrypt','Memcached','MySQLi','SQLite3','OpenSSL','PDO','pdo_mysql','pdo_sqlite','Redis','session','Sockets','Swoole','dom','xml','SimpleXML','libxml','bz2','zip','zlib');
else $func_items = array('mysql_connect', 'file_get_contents', 'xml_parser_create','filesize', 'curl_init','zip_open','ffmpeg','imagick','imagemagick','cURL','date','Exif','Fileinfo','Ftp','GD','gettext','intl','Iconv','json','ldap','Mbstring','Mcrypt','Memcached','MySQLi','SQLite3','OpenSSL','PDO','pdo_mysql','pdo_sqlite','Redis','session','Sockets','Swoole','dom','xml','SimpleXML','libxml','bz2','zip','zlib');
foreach($func_items as $item) {
$status = function_exists($item);
$func_str .= "\n";
$func_str .= "$item\n";
if($status) {
$func_str .= "\n";
$func_str .= "
\n";
} else {
$func_str .= "\n";
$func_str .= "\n";
}
}
echo $func_str;
}
// 已经安装模块
$loaded_extensions = get_loaded_extensions();
$extensions = '';
foreach ($loaded_extensions as $key => $value) {
$extensions .= ''.$value . '
';
}
$zaixianrenshu = DB::result_first("SELECT COUNT(*) FROM " . DB::table('session') . " WHERE uid");
$yonghurenshu = DB::result_first("SELECT COUNT(*) FROM " . DB::table('user') . " WHERE uid");
$tingyongrenshu = DB::result_first("SELECT COUNT(*) FROM " . DB::table('user') . " WHERE status");
$wenjiangeshu = DB::result_first("SELECT COUNT(*) FROM " . DB::table('attachment') . " WHERE aid");
$kongjianshiyong=formatsize(DB::result_first("SELECT SUM(filesize) FROM ".DB::table('attachment')));
$type=empty($_GET['type'])?'user':trim($_GET['type']);
$starttime=trim($_GET['starttime']);
$endtime=trim($_GET['endtime']);
$time=trim($_GET['time']);
if(empty($time)) $time='day';
$operation=trim($_GET['operation']);
switch($time){
case 'month':
if(!$starttime){
$start=strtotime("-6 month",TIMESTAMP);
$starttime=dgmdate($start,'Y-m');
}
if(!$endtime){
$endtime=dgmdate(TIMESTAMP,'Y-m');
}
break;
case 'week':
if(!$starttime){
$start=strtotime("-12 week",TIMESTAMP);
}else{
$start=strtotime($starttime);
}
//$darr=getdate($stamp);
$stamp_l=strtotime("this Monday",$start);
//$stamp_u=strtotime("+6 day",$stamp_l);
$starttime=dgmdate($stamp_l,'Y-m-d');
if(!$endtime){
$end=TIMESTAMP;
}else{
$end=strtotime($endtime);
}
/*$darr=getdate($end);
$stamp_l=strtotime("this Monday",$end);
$stamp_u=strtotime("+6 day",$stamp_l);*/
$endtime=dgmdate($end,'Y-m-d');
break;
case 'day':
if(!$starttime){
$start=strtotime("-12 day",TIMESTAMP);
$starttime=dgmdate($start,'Y-m-d');
}
if(!$endtime){
$endtime=dgmdate(TIMESTAMP,'Y-m-d');
}
break;
}
function getData($time,$starttime,$endtime,$type){
$endtime=strtotime($endtime);
$data=array('total'=>array(),
'add'=>array(),
'login'=>array(),
'total_d'=>array(),
'add_d'=>array(),
'login_d'=>array(),
);
switch($time){
case 'month':
$stamp=strtotime($starttime);
$arr=getdate($stamp);
$key=$arr['year'].'-'.$arr['mon'];
$low=strtotime($key);
$up=strtotime('+1 month',$low);
$ltotal=$data['total'][$key]=DB::result_first("select COUNT(*) from %t where regdate<%d",array('user',$up));
$data['add'][$key]=DB::result_first("select COUNT(*) from %t where regdate<%d and regdate>=%d",array('user',$up,$low));
$ltotal+=$data['add'][$key];
while($up<=$endtime){
$key=dgmdate($up,'Y-m');
$low=strtotime($key);
$up=strtotime('+1 month',$low);
$data['add'][$key]=DB::result_first("select COUNT(*) from %t where regdate<%d and regdate>=%d",array('user',$up,$low));
$ltotal+=$data['add'][$key];
$data['total'][$key]=$ltotal;
}
break;
case 'week':
$stamp=strtotime($starttime);
$arr=getdate($stamp);
$low=strtotime('+'.(1-$arr['wday']).' day',$stamp);
$up=strtotime('+1 week',$low);
$key=dgmdate($low,'m-d').'~'.dgmdate($up-60*60*24,'m-d');
$ltotal=$data['total'][$key]=DB::result_first("select COUNT(*) from %t where regdate<%d",array('user',$up));
$data['add'][$key]=DB::result_first("select COUNT(*) from %t where regdate<%d and regdate>=%d",array('user',$up,$low));
$ltotal+=$data['add'][$key];
while($up<$endtime){
$low=$up;
$up=strtotime('+1 week',$low);
$key=dgmdate($low,'m-d').'~'.dgmdate($up-60*60*24,'m-d');
$data['add'][$key]=DB::result_first("select COUNT(*) from %t where regdate<%d and regdate>=%d",array('user',$up,$low));
$ltotal+=$data['add'][$key];
$data['total'][$key]=$ltotal;
}
break;
case 'day':
$low=strtotime($starttime);//strtotime('+'.(1-$arr['hours']).' day',$stamp);
$up=$low+24*60*60;
$key=dgmdate($low,'Y-m-d');
$ltotal=$data['total'][$key]=DB::result_first("select COUNT(*) from %t where regdate<%d",array('user',$up));
$data['add'][$key]=DB::result_first("select COUNT(*) from %t where regdate<%d and regdate>=%d",array('user',$up,$low));
$ltotal+=$data['add'][$key];
while($up<=$endtime){
$low=$up;
$up=strtotime('+1 day',$low);
$key=dgmdate($low,'Y-m-d');
$data['add'][$key]=DB::result_first("select COUNT(*) from %t where regdate<%d and regdate>=%d",array('user',$up,$low));
$ltotal+=$data['add'][$key];
$data['total'][$key]=$ltotal;
}
break;
case 'all':
$min=DB::result_first("select min(regdate) from %t where regdate>0",array('user'));
$min-=60;
$max=TIMESTAMP+60*60*8;
$days=($max-$min)/(60*60*24);
if($days<20){
$time='day';
$starttime=gmdate('Y-m-d',$min);
$endtime=gmdate('Y-m-d',$max);
}elseif($days<70){
$time='week';
$starttime=gmdate('Y-m-d',$min);
$endtime=gmdate('Y-m-d',$max);
}else{
$time='month';
$starttime=gmdate('Y-m',$min);
$endtime=gmdate('Y-m',$max);
}
$data=getData($time,$starttime,$endtime,$type);
break;
}
return $data;
}
if($operation=='getdata'){
$data=getData($time,$starttime,$endtime,$type);
include template('xtxx_ajax');
}else{
$data=getData($time,$starttime,$endtime,$type);
}
include template('xtxx');
}
?>