Files
DzzOffice/admin/setting/index.php
小胡 53be1fecb4 更新内容:
系统设置新增功能
1. 是否启用登录密码加密:
在许多现代系统中,登录密码加密是默认启用的,以确保用户密码的安全性。所以新增了一个系统配置项,允许管理员决定是否启用登录密码的加密传输。这一功能增强了用户密码的安全性,防止密码泄露风险。
2. UID登录(允许通过UID的方式登录验证):
引入UID(用户唯一标识符)登录方式,除了传统的用户名/邮箱/手机号登录外,用户还可以通过其UID进行登录验证,为系统访问提供另一种灵活的身份验证方式。
3. 用户在线时间更新时长:
管理员可以自定义更新用户在线时间的时间频率,这有助于更准确地反映用户的活跃状态,并对系统资源的使用进行优化。
4. 图片处理库类型:
系统新增了图片处理库类型的选择功能,允许管理员根据实际需求选择合适的图像处理库来处理缩略图和水印,以满足不同的性能和效果需求。
新增性能优化栏
1. 禁止浏览器缓冲:
通过此设置,管理员可以控制是否禁止浏览器对页面内容进行缓存。在某些场景下,禁用缓存可以提高页面的实时性和准确性。
2. 在线保持时间:
设置用户会话(session)的在线保持时间,即用户在不进行任何操作后,多久后会被视为离线。这有助于管理系统的会话资源,避免资源浪费。
3. 关闭session机制:   提供选项关闭系统的session管理机制。在某些特殊应用场景下,可能不需要使用session来跟踪用户状态,关闭session可以减少服务器负担,提高性能。
系统工具新增文件权限检查栏:    系统工具中新增了文件权限检查功能,帮助管理员快速识别和修复文件权限问题,确保系统的正常运行和数据安全。
优化提示消息框UI:
对系统的提示消息框进行了UI优化,使其更加美观、易用,提升了用户的使用体验。
压缩css、js代码优化前端性能
对前端的CSS和JS代码进行了压缩处理,减少了文件体积,加快了加载速度,从而提升了前端性能。
2024-07-21 18:38:53 +08:00

385 lines
17 KiB
PHP
Raw 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
/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
if (!defined('IN_DZZ') || !defined('IN_ADMIN')) {
exit('Access Denied');
}
include_once libfile('function/cache');
include_once libfile('function/organization');
$operation = empty($_GET['operation']) ? 'basic' : trim($_GET['operation']);
$setting = C::t('setting') -> fetch_all(null);
$checkLanguage = checkLanguage();
if ($setting['thumbsize']) {
$setting['thumbsize'] = unserialize($setting['thumbsize']);
foreach ($setting['thumbsize'] as $key => $value) {
$value['width'] = intval($value['width']);
if (!$value['width']) {
$value['width'] = ($key == 'samll' ? 256 : ($key == 'middle' ? 800 : 1440));
}
$value['height'] = intval($value['height']);
if (!$value['height']) {
$value['height'] = ($key == 'samll' ? 256 : ($key == 'middle' ? 600 : 900));
}
$setting['thumbsize'][$key] = $value;
}
}
if (!submitcheck('settingsubmit')) {
if ($operation == 'basic') {
$navtitle = lang('members_verify_base').' - '.lang('appname');
$spacesize = DB::result_first("select maxspacesize from " . DB::table('usergroup_field') . " where groupid='9'");
include_once libfile('function/organization');
if ($setting['defaultdepartment']) {
$patharr = getPathByOrgid($setting['defaultdepartment']);
$defaultdepartment = implode(' - ', ($patharr));
}
if (empty($defaultdepartment)) {
$defaultdepartment = lang('no_join_agency_department');
$setting['defaultdepartment'] = 'other';
}
$applist =DB::fetch_all("select appname,identifier from %t where isshow>0 and `available`>0 and app_path='dzz' ORDER BY disp",array('app_market'));
//$orgtree=getDepartmentOption(0);
} elseif ($operation == 'qywechat') {
if ($setting['synorgid']) {
$patharr = getPathByOrgid($setting['synorgid']);
$syndepartment = implode(' - ', ($patharr));
}
if (empty($syndepartment)) {
$syndepartment = lang('all_username');
$setting['syndepartment'] = '0';
}
} elseif ($operation == 'desktop') {
if ($setting['desktop_default'] && !is_array($setting['desktop_default'])) {
$setting['desktop_default'] = unserialize($setting['desktop_default']);
}
if (!$setting['desktop_default']) {
$setting['desktop_default'] = array('iconview' => 2, 'taskbar' => 'bottom', 'iconposition' => 0, 'direction' => 0, );
}
if ($_G['setting']['dzz_iconview']) {
$iconview = $_G['setting']['iconview'];
} else {
$iconview = C::t('iconview') -> fetch_all();
}
} elseif ($operation == 'upload') {
$setting['maxChunkSize'] = round($setting['maxChunkSize'] / (1024 * 1024), 2);
$navtitle = lang('upload_set').' - '.lang('appname');
$setting['unRunExts'] = implode(',', dunserialize($setting['unRunExts']));
$usergroups = DB::fetch_all("select f.*,g.grouptitle from %t f LEFT JOIN %t g ON g.groupid=f.groupid where f.groupid NOT IN ('2','3','4','5','6','7','8') order by groupid DESC", array('usergroup_field', 'usergroup'));
} elseif ($operation == 'at') {
$navtitle = '@'.lang('sector_set').' - '.lang('appname');
$setting['at_range'] = dunserialize($setting['at_range']);
$usergroups = DB::fetch_all("select f.*,g.grouptitle from %t f LEFT JOIN %t g ON g.groupid=f.groupid where f.groupid NOT IN ('2','3','4','5','6','7','8') order by groupid DESC", array('usergroup_field', 'usergroup'));
} elseif ($operation == 'access') {
$navtitle = lang('loginSet').' - '.lang('appname');
$setting['strongpw'] = dunserialize($setting['strongpw']);
$setting['welcomemsgtitle'] = cutstr(trim(dhtmlspecialchars($setting['welcomemsgtitle'])), 75);
} elseif ($operation == 'notification') {
$navtitle = lang('Notification Settings').' - '.lang('appname');
} elseif ($operation == 'watermark') {
$navtitle = '水印设置 - '.lang('appname');
} elseif ($operation == 'qywechat') {
$navtitle = lang('weinxin_company').' - '.lang('appname');
} elseif ($operation == 'denlu') {
$navtitle = lang('loginSet').' - '.lang('appname');
}elseif($operation == 'space'){//获取空间设置结果
$navtitle=lang('spaceSet').' - '.lang('appname');
$openarr=json_encode(array('orgids'=>$open));
//获取用户组空间设置数据
$usergroups = DB::fetch_all("select f.*,g.grouptitle from %t f LEFT JOIN %t g ON g.groupid=f.groupid where f.groupid NOT IN ('2','3','4','5','6','7','8') order by groupid DESC", array('usergroup_field', 'usergroup'));
}elseif($operation == 'permgroup'){
$perms = get_permsarray();//获取所有权限;
$permgroups = C::t('resources_permgroup')->fetch_all();
$navtitle=lang('permGroupSet').' - '.lang('appname');
}elseif ($operation == 'qqlogin') {
$navtitle = lang('qq_longin_set').' - '.lang('appname');
}elseif ($operation == 'datetime') {
$navtitle = lang('time_or_date').' - '.lang('appname');
$checktimeformat = array($setting['timeformat'] == 'H:i' ? 24 : 12 => 'checked');
$setting['userdateformat'] = dateformat($setting['userdateformat']);
$setting['dateformat'] = dateformat($setting['dateformat']);
$timezones = lang('setting_timezone');
} elseif ($operation == 'sec') {
$navtitle = lang('verification_code_set').' - '.lang('appname');
$seccodecheck = /*$secreturn =*/1;
$sectpl = '<br /><sec>: <sec><sec>';
$checksc = array();
$setting['seccodedata'] = dunserialize($setting['seccodedata']);
$setting['reginput'] = dunserialize($setting['reginput']);
$seccodestatus[1] = $setting['seccodestatus'] & 1;
$seccodestatus[2] = $setting['seccodestatus'] & 2;
$seccodestatus[3] = $setting['seccodestatus'] & 4;
} elseif ($operation == 'desktop') {
$navtitle = lang('desktop_set').' - '.lang('appname');
} elseif ($operation == 'loginset') {
$navtitle = lang('login_page_set').' - '.lang('appname');
if ($setting['loginset'] && !is_array($setting['loginset'])) {
$setting['loginset'] = unserialize($setting['loginset']);
}
} elseif ($operation == 'smiley') {
$navtitle = lang('expression_set').' - '.lang('appname');
} elseif ($operation == 'mail') {
$navtitle = lang('mail').' - '.lang('appname');
$setting['mail'] = dunserialize($setting['mail']);
$passwordmask = $setting['mail']['auth_password'] ? $setting['mail']['auth_password']{0} . '********' . substr($setting['mail']['auth_password'], -2) : '';
$smtps = array();
foreach ($setting['mail']['smtp'] as $id => $smtp) {
$smtp['authcheck'] = $smtp['auth'] ? 'checked' : '';
$smtp['auth_password'] = $smtp['auth_password'] ? $smtp['auth_password']{0} . '********' . substr($smtp['auth_password'], -2) : '';
$smtps[$id] = $smtp;
}
} elseif ($operation == 'censor') {
$navtitle = lang('words_set').' - '.lang('appname');
loadcache('censor');
$badwords = $_G['cache']['censor']['words'];
$replace = empty($_G['cache']['censor']['replace']) ? '*' : $_G['cache']['censor']['replace'];
}
} else {
$settingnew = $_GET['settingnew'];
if ($operation == 'basic') {
$settingnew['bbname'] = $settingnew['sitename'];
foreach ($settingnew['thumbsize'] as $key => $value) {
$value['width'] = intval($value['width']);
if (!$value['width']) {
$value['width'] = ($key == 'samll' ? 256 : ($key == 'middle' ? 800 : 1440));
}
$value['height'] = intval($value['height']);
if (!$value['height']) {
$value['height'] = ($key == 'samll' ? 256 : ($key == 'middle' ? 600 : 900));
}
$settingnew['thumbsize'][$key] = $value;
}
//设置默认应用
if($settingnew["default_mod"] && $settingnew["default_mod"]!=$_GET["old_default_mod"]){
$configfile = DZZ_ROOT.'data/cache/default_mod.php';
$configarr = array();
$configarr['default_mod' ]=$settingnew["default_mod"];
@file_put_contents($configfile,"<?php \t\n return ".var_export($configarr,true).";");
}
} elseif ($operation == 'upload') {
if ($settingnew['unRunExts'])
$settingnew['unRunExts'] = explode(',', trim($settingnew['unRunExts'], ','));
else
$settingnew['unRunExts'] = array();
if (!in_array('php', $settingnew['unRunExts']))
$settingnew['unRunExts'][] = 'php';
$settingnew['maxChunkSize'] = intval($settingnew['maxChunkSize'] * 1024 * 1024);
$group = $_GET['group'];
foreach ($group as $key => $value) {
C::t('usergroup_field') -> update(intval($key), array('maxspacesize' => intval($value['maxspacesize']), 'maxattachsize' => intval($value['maxattachsize']), 'attachextensions' => trim($value['attachextensions'])));
}
include_once libfile('function/cache');
updatecache('usergroups');
} elseif ($operation == 'mail') {
$setting['mail'] = dunserialize($setting['mail']);
$oldsmtp = $settingnew['mail']['mailsend'] == 3 ? $settingnew['mail']['smtp'] : $settingnew['mail']['esmtp'];
$deletesmtp = $settingnew['mail']['mailsend'] != 1 ? ($settingnew['mail']['mailsend'] == 3 ? $settingnew['mail']['smtp']['delete'] : $settingnew['mail']['esmtp']['delete']) : array();
$settingnew['mail']['smtp'] = array();
foreach ($oldsmtp as $id => $value) {
if ((empty($deletesmtp) || !in_array($id, $deletesmtp)) && !empty($value['server']) && !empty($value['port'])) {
$passwordmask = $setting['mail']['smtp'][$id]['auth_password'] ? $setting['mail']['smtp'][$id]['auth_password']{0} . '********' . substr($setting['mail']['smtp'][$id]['auth_password'], -2) : '';
$value['auth_password'] = $value['auth_password'] == $passwordmask ? $setting['mail']['smtp'][$id]['auth_password'] : $value['auth_password'];
$settingnew['mail']['smtp'][] = $value;
}
}
if (!empty($_GET['newsmtp'])) {
foreach ($_GET['newsmtp']['server'] as $id => $server) {
if (!empty($server) && !empty($_GET['newsmtp']['port'][$id])) {
$settingnew['mail']['smtp'][] = array('server' => $server, 'port' => $_GET['newsmtp']['port'][$id] ? intval($_GET['newsmtp']['port'][$id]) : 25, 'auth' => $_GET['newsmtp']['auth'][$id] ? 1 : 0, 'from' => $_GET['newsmtp']['from'][$id], 'auth_username' => $_GET['newsmtp']['auth_username'][$id], 'auth_password' => $_GET['newsmtp']['auth_password'][$id]);
}
}
}
} elseif ($operation == 'notification') {
$settingnew['notification'] = intval($settingnew['notification']);
} elseif ($operation == 'cachethread') {
$settingnew['onlinehold'] = intval($settingnew['onlinehold']) > 0 ? intval($settingnew['onlinehold']) : 15;
} elseif ($operation == 'watermark') {
$settingnew['watermark'] = intval($settingnew['watermark']);
} elseif ($operation == 'denlu') {
$settingnew['numberoflogins'] = intval($settingnew['numberoflogins']);
$settingnew['forbiddentime'] = intval($settingnew['forbiddentime']);
} elseif ($operation == 'access') {
isset($settingnew['reglinkname']) && empty($settingnew['reglinkname']) && $settingnew['reglinkname'] = lang('register_immediately');
$settingnew['pwlength'] = intval($settingnew['pwlength']);
$settingnew['regstatus'] = intval($settingnew['regstatus']);
/*if(in_array('open', $settingnew['regstatus']) && in_array('invite', $settingnew['regstatus'])) {
$settingnew['regstatus'] = 3;
} elseif(in_array('open', $settingnew['regstatus'])) {
$settingnew['regstatus'] = 1;
} elseif(in_array('invite', $settingnew['regstatus'])) {
$settingnew['regstatus'] = 2;
} else {
$settingnew['regstatus'] = 0;
}*/
/*$settingnew['welcomemsg'] = (array)$settingnew['welcomemsg'];
if(in_array('1', $settingnew['welcomemsg']) && in_array('2', $settingnew['welcomemsg'])) {
$settingnew['welcomemsg'] = 3;
} elseif(in_array('1', $settingnew['welcomemsg'])) {
$settingnew['welcomemsg'] = 1;
} elseif(in_array('2', $settingnew['welcomemsg'])) {
$settingnew['welcomemsg'] = 2;
} else {
$settingnew['welcomemsg'] = 0;
}*/
if (empty($settingnew['strongpw'])) {
$settingnew['strongpw'] = array();
}
} elseif($operation == 'space'){//空间设置
$group = $_GET['group'];
foreach ($group as $key => $value) {
C::t('usergroup_field') -> update(intval($key), array('maxspacesize' => intval($value['maxspacesize']), 'maxattachsize' => intval($value['maxattachsize']), 'attachextensions' => trim($value['attachextensions'])));
}
$settingnew['memorySpace'] =intval($settingnew['memorySpace']);
$settingnew['orgmemorySpace'] =isset($settingnew['orgmemorySpace'])?intval($settingnew['orgmemorySpace']):0;
$settingnew['groupmerorySpace'] =isset($settingnew['groupmerorySpace'])?intval($setting['groupmerorySpace']):0;
$settingnew['systemSpace'] =isset($settingnew['systemSpace'])?intval($settingnew['systemSpace']):0;
/*$setarr =array(//接收设置数据处理
//'usermemoryOn' => isset($setting['usermemoryOn'])?$setting['usermemoryOn']:0,
//'mermoryusersetting' => $setting['mermoryusersetting'],
//'memoryorgusers' => $setting['memoryorgusers'],
'memorySpace' => intval($setting['memorySpace']),
//'organizationOn' => isset($setting['organizationOn'])?$setting['organizationOn']:0,
'orgmemorySpace' => isset($setting['orgmemorySpace'])?intval($setting['orgmemorySpace']):0,
//'groupOn' => isset($setting['groupOn'])?$setting['groupOn']:'',
'groupmerorySpace'=>isset($setting['groupmerorySpace'])?intval($setting['groupmerorySpace']):0,
'systemSpace'=>isset($setting['systemSpace'])?intval($setting['systemSpace']):0,
);
if(C::t('setting')->update_batch($setarr)){
//更新缓存
updatecache('setting');
//更新机构最大空间值,部门不做处理
if($setarr['orgmemorySpace']){
DB::update('organization',array('maxspacesize'=>$setarr['orgmemorySpace']),array('`type`'=>0,'forgid'=>0));
}
//更新群组最大空间值
if($setarr['groupmerorySpace']){
DB::update('organization',array('maxspacesize'=>$setarr['groupmerorySpace']),array('`type`'=>1));
}
}*/
} elseif ($operation == 'datetime') {
if (isset($settingnew['timeformat'])) {
$settingnew['timeformat'] = $settingnew['timeformat'] == '24' ? 'H:i' : 'h:i A';
}
if (isset($settingnew['dateformat'])) {
$settingnew['dateformat'] = dateformat($settingnew['dateformat'], 'format');
}
} elseif ($operation == 'sec') {
$settingnew['seccodestatus'] = bindec(intval($settingnew['seccodestatus'][3]) . intval($settingnew['seccodestatus'][2]) . intval($settingnew['seccodestatus'][1]));
} elseif ($operation == 'qqlogin') {
if (empty($settingnew['qq_appid']) || empty($settingnew['qq_appkey'])) {
$settingnew['qq_login'] = 0;
}
} elseif ($operation == 'censor') {
$data = array('replace' => trim($_GET['replace']), 'words' => $_GET['badwords']);
savecache('censor', $data);
showmessage('do_success', dreferer());
} elseif ($operation == 'loginset') {
if ($back = trim($settingnew['loginset']['background'])) {
if (strpos($back, '#') === 0) {
$settingnew['loginset']['bcolor'] = $back;
} else {
$arr = explode('.', $back);
$ext = array_pop($arr);
if ($ext && in_array(strtolower($ext), array('jpg', 'jpeg', 'gif', 'png'))) {
$settingnew['loginset']['img'] = $back;
$settingnew['loginset']['bcolor'] = '';
} else {
$settingnew['loginset']['url'] = $back;
$settingnew['loginset']['bcolor'] = '';
}
}
} else {
$settingnew['loginset']['bcolor'] = '';
}
if ($back = trim($settingnew['loginset']['kbcolor'])) {
if (strpos($back, '#') === 0 || strpos($back, 'rgb') === 0) {
$settingnew['loginset']['kbcolor'] = $back;
}else {
$arr = explode('.', $back);
$ext = array_pop($arr);
if ($ext && in_array(strtolower($ext), array('jpg', 'jpeg', 'gif', 'png'))) {
$settingnew['loginset']['kbcolor'] = $back;
}else {
$settingnew['loginset']['kbcolor'] ='';
}
}
}
if ($back = trim($settingnew['loginset']['transparency'])) {
if (strpos($back, '#') === 0 || strpos($back, 'rgb') === 0) {
$settingnew['loginset']['transparency'] = $back;
}else {
$settingnew['loginset']['transparency'] ='';
}
}
} elseif ($operation == 'qywechat') {
switch($_GET['fbind']) {
case 'bind' :
$wechat = new qyWechat( array('appid' => $settingnew['CorpID'], 'appsecret' => $settingnew['CorpSecret']));
if (!$wechat -> checkAuth()) {
showmessage(lang('verification_unsuccessful').',errCode' . $wechat -> errCode . '; errMsg:' . $wechat -> errMsg, dreferer());
}
if (empty($setting['token_0']))
$settingnew['token_0'] = random(8);
if (empty($setting['encodingaeskey_0']))
$settingnew['encodingaeskey_0'] = random(43);
break;
case 'unbind' :
$settingnew['CorpID'] = '';
$settingnew['CorpSecret'] = '';
break;
}
}
$updatecache = FALSE;
$settings = array();
foreach ($settingnew as $key => $val) {
if ($setting[$key] != $val) {
$updatecache = TRUE;
if (in_array($key, array('timeoffset', 'regstatus', 'oltimespan', 'seccodestatus'))) {
$val = (float)$val;
}
$settings[$key] = $val;
}
}
if ($settings) {
C::t('setting') -> update_batch($settings);
}
if($operation == 'basic'){
if($settingnew['sitelogo'] && $settingnew['sitelogo']!=$setting['sitelogo']){
if($setting['sitelogo']) C::t('attachment')->delete_by_aid($setting['sitelogo']);
C::t('attachment')->addcopy_by_aid($settingnew['sitelogo'],1);
}
}
if ($updatecache) {
updatecache('setting');
}
if ($operation == 'upload') {
dfsockopen($_G['siteurl'] . 'misc.php?mod=setunrun', 0, '', '', FALSE, '', 1);
}
showmessage('do_success', dreferer());
}
function dateformat($string, $operation = 'formalise') {
$string = dhtmlspecialchars(trim($string));
$replace = $operation == 'formalise' ? array( array('n', 'j', 'y', 'Y'), array('mm', 'dd', 'yy', 'yyyy')) : array( array('mm', 'dd', 'yyyy', 'yy'), array('n', 'j', 'Y', 'y'));
return str_replace($replace[0], $replace[1], $string);
}
include template('main');
?>