Files
xinhu/webmain/system/cog/cogAction.php
2023-05-11 16:19:42 +08:00

487 lines
15 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
class cogClassAction extends Action
{
public function sysinfoAjax()
{
$fields = array(
'title' => '系统名称',
'url' => '系统URL地址',
'localurl' => '系统本地地址',
'outurl' => '外网地址',
'rootpath' => '系统根目录',
'db_drive' => '操作数据库驱动',
'db_host' => '数据库地址',
'db_name' => '数据库名称',
'version' => '版本',
'phpos' => '服务器',
'phpver' => 'PHP版本',
'mysqlver' => 'mysql版本',
'SERVER_SOFTWARE' => 'web服务器',
'upload_max_filesize' => '最大上传大小',
'post_max_size' => 'POST最大',
'memory_limit' => '使用最大内存',
'curl' => '是否支持CURL',
'max_execution_time' => 'PHP执行超时时间',
);
$data = array(
'title' => getconfig('title'),
'url' => getconfig('url'),
'localurl' => getconfig('localurl'),
'taskurl' => getconfig('taskurl'),
'outurl' => getconfig('outurl'),
'xinhukey' => getconfig('xinhukey'),
'db_host' => DB_HOST,
'db_name' => DB_BASE,
'rootpath' => ROOT_PATH,
'db_drive' => getconfig('db_drive'),
'version' => '信呼V'.VERSION.'',
'phpos' => PHP_OS,
'phpver' => PHP_VERSION,
'mysqlver' => $this->db->getsyscount('version'),
'SERVER_SOFTWARE' => $_SERVER['SERVER_SOFTWARE'],
'upload_max_filesize' => ini_get('upload_max_filesize'),
'post_max_size' => ini_get('post_max_size'),
'memory_limit' => ini_get('memory_limit'),
'max_execution_time' => ini_get('max_execution_time').'秒',
);
if(!function_exists('curl_init')){
$data['curl'] = '<font color=red>不支持</font>';
}else{
$data['curl'] = '<font color=green>支持</font>';
}
$this->returnjson(array(
'fields' => $fields,
'data' => $data,
));
}
public function getinfoAjax()
{
$arr['title'] = getconfig('title');
$arr['outurl'] = getconfig('outurl');
$arr['url'] = arrvalue($GLOBALS['_tempconf'],'url');
$arr['localurl'] = getconfig('localurl');
$arr['apptitle'] = getconfig('apptitle');
$arr['platurl'] = getconfig('platurl');
$arr['reimtitle'] = getconfig('reimtitle');
$arr['asynkey'] = getconfig('asynkey');
$arr['openkey'] = getconfig('openkey');
$arr['db_drive'] = getconfig('db_drive');
$arr['xinhukey'] = getconfig('xinhukey');
$arr['bcolorxiang'] = getconfig('bcolorxiang');
$arr['qqmapkey'] = getconfig('qqmapkey');
$arr['asynsend'] = getconfig('asynsend');
$arr['defstype'] = getconfig('defstype','1');
$arr['officeyl'] = getconfig('officeyl'); //文档预览
$arr['officebj'] = getconfig('officebj');
$arr['apptheme'] = getconfig('apptheme');
$arr['officebj_key'] = getconfig('officebj_key');
$arr['useropt'] = getconfig('useropt');
$arr['sqllog'] = getconfig('sqllog') ? '1' : '0';
$arr['debug'] = getconfig('debug') ? '1' : '0';
$arr['reim_show'] = getconfig('reim_show') ? '1' : '0';
$arr['mobile_show'] = getconfig('mobile_show') ? '1' : '0';
$arr['companymode'] = getconfig('companymode') ? '1' : '0';
$arr['isshou'] = $this->isshouquan() ? '1' : '0';
$arr['editpass'] = getconfig('editpass','0');
$arr['asyntest'] = $this->option->getval('asyntest');
$loginyzm = getconfig('loginyzm');
if(!$loginyzm)$loginyzm = '0';
$arr['loginyzm'] = $loginyzm;
if(getconfig('systype')=='demo'){
$arr['xinhukey']='';
$arr['officebj_key']='';
}
if(!isempt($arr['xinhukey']))$arr['xinhukey'] = substr($arr['xinhukey'],0,5).'*****'.substr($arr['xinhukey'],-5);
$this->returnjson($arr);
}
private function isshouquan()
{
$key = getconfig('authorkey');
if(!isempt($key) && $this->rock->isjm($key)){
return true;
}else{
return false;
}
}
public function savecongAjax()
{
if(getconfig('systype')=='demo')exit('演示上禁止设置');
if($this->getsession('isadmin')!='1')exit('非管理员不能操作');
$puurl = $this->option->getval('reimpushurlsystem',1);
$_confpath = $this->rock->strformat('?0/?1/?1Config.php', ROOT_PATH, PROJECT);
$arr = require($_confpath);
$title = $this->post('title');
if(!isempt($title))$arr['title'] = $title;
$arr['url'] = $this->post('url');
$arr['outurl'] = $this->post('outurl');
$arr['reimtitle'] = $this->post('reimtitle');
$arr['qqmapkey'] = $this->post('qqmapkey');
$arr['platurl'] = $this->post('platurl');
$apptitle = $this->post('apptitle');
if(!isempt($apptitle))$arr['apptitle'] = $apptitle;
$asynkey = $this->post('asynkey');
if(!isempt($asynkey))$arr['asynkey'] = $asynkey;
$db_drive = $this->post('db_drive');
if(!isempt($db_drive)){
if($db_drive=='mysql' && !function_exists('mysql_connect'))exit('未开启mysql扩展模块');
if($db_drive=='mysqli' && !class_exists('mysqli'))exit('未开启mysqli扩展模块');
if($db_drive=='pdo' && !class_exists('PDO'))exit('未开启pdo扩展模块');
$arr['db_drive'] = $db_drive;
}
$arr['localurl'] = $this->post('localurl');
$arr['openkey'] = $this->post('openkey');
$arr['xinhukey'] = $this->post('xinhukey');
if(contain($arr['xinhukey'],'**'))$arr['xinhukey'] = getconfig('xinhukey');
$arr['bcolorxiang'] = $this->post('bcolorxiang');
$arr['officeyl'] = $this->post('officeyl');
$arr['useropt'] = $this->post('useropt');
$arr['editpass'] = $this->post('editpass');
$arr['defstype'] = $this->post('defstype','1');
$arr['officebj'] = $this->post('officebj');
$arr['officebj_key']= $this->post('officebj_key');
$asynsend = $this->post('asynsend');
$arr['asynsend'] = $asynsend;
$arr['sqllog'] = $this->post('sqllog')=='1';
$arr['debug'] = $this->post('debug')=='1';
$arr['reim_show'] = $this->post('reim_show')=='1';
$arr['mobile_show'] = $this->post('mobile_show')=='1';
$arr['companymode'] = $this->post('companymode')=='1';
$arr['loginyzm'] = $this->post('loginyzm');
$arr['apptheme'] = $this->post('apptheme');
if($asynsend == '1' && isempt($puurl))exit('未安装或开启服务端不能使用异步发送消息');
$xpd = explode(',', "\\,', ,<,>,*,%,&");
$xpd[]= "\n";
foreach($arr as $k=>$v)if(!is_bool($v))$arr[$k] = str_replace($xpd,'',$v);
$smarr['url'] = '系统URL';
$smarr['localurl'] = '本地系统URL用于服务器上浏览地址';
$smarr['title'] = '系统默认标题';
$smarr['neturl'] = '系统外网地址,用于公网';
$smarr['apptitle'] = 'APP上和手机网页版上的标题';
$smarr['reimtitle'] = 'REIM即时通信上标题';
$smarr['weblogo'] = 'PC客户端上的logo图片';
$smarr['db_host'] = '数据库地址';
$smarr['db_user'] = '数据库用户名';
$smarr['db_pass'] = '数据库密码';
$smarr['db_base'] = '数据库名称';
$smarr['perfix'] = '数据库表名前缀';
$smarr['qom'] = 'session、cookie前缀';
$smarr['highpass'] = '超级管理员密码,可用于登录任何帐号';
$smarr['db_drive'] = '操作数据库驱动有mysql,mysqli,pdo三种';
$smarr['randkey'] = '系统随机字符串密钥';
$smarr['asynkey'] = '这是异步任务key';
$smarr['openkey'] = '对外接口openkey';
$smarr['sqllog'] = '是否记录sql日志保存'.UPDIR.'/sqllog下';
$smarr['asynsend'] = '是否异步发送提醒消息0同步1自己服务端异步2官网VIP用户异步';
$smarr['install'] = '已安装,不要去掉啊';
$smarr['xinhukey'] = '信呼官网key用于在线升级使用';
$smarr['bcolorxiang'] = '单据详情页面上默认展示线条的颜色';
$smarr['debug'] = '为true调试开发模式,false上线模式';
$smarr['reim_show'] = '首页是否显示REIM';
$smarr['mobile_show'] = '首页是否显示手机版';
$smarr['loginyzm'] = '登录方式:0仅使用帐号+密码,1帐号+密码/手机+验证码,2帐号+密码+验证码,3仅使用手机+验证码';
$smarr['officeyl'] = '文档Excel.Doc预览类型,0自己部署插件1使用官网支持任何平台';
$smarr['officedk'] = '文件预览打开方式1新窗口打开';
$smarr['useropt'] = '1记录用户操作保存到日志里,空不记录';
$smarr['defstype'] = 'PC后台主题皮肤可以设置1到34';
$smarr['editpass'] = '用户登录修改密码0不用修改1强制用户必须修改';
$smarr['companymode'] = '多单位模式true就是开启';
$smarr['outurl'] = '这个地址当你内网地址访问时向手机推送消息的地址';
$smarr['officebj'] = '文档在线编辑1官网提供或者自己部署';
$smarr['officebj_key'] = '文档在线编辑agentkey';
$smarr['apptheme'] = '系统或app的主题颜色';
$str1 = '';
foreach($arr as $k=>$v){
$bz = '';
if(isset($smarr[$k]))$bz=' //'.$smarr[$k].'';
if(is_bool($v)){
$v = $v ? 'true' : 'false';
}else{
$v = "'$v'";
}
$str1.= " '$k' => $v,$bz\n";
}
$str = '<?php
if(!defined(\'HOST\'))die(\'not access\');
//[管理员]在'.$this->now.'通过[系统→系统工具→系统设置],保存修改了配置文件
return array(
'.$str1.'
);';
@$bo = file_put_contents($_confpath, $str);
if($bo){
echo 'ok';
}else{
echo '保存失败无法写入:'.$_confpath.'';
}
}
public function logbefore($table)
{
$key = $this->post('key');
$s = '';
if($key != ''){
$s = "and (`type`='$key' or `optname` like '$key%' or `remark` like '$key%' or `web`='$key' or `ip`='$key')";
}
return $s;
}
public function logintokenbefore($table)
{
$key = $this->post('key');
$s = '';
if($key != ''){
$s = "and (`name` like '%$key%' or `cfrom` like '%$key%' or `web` like '%$key%')";
}
return $s;
}
public function delloginAjax()
{
$id = c('check')->onlynumber($this->post('id'));
m('logintoken')->delete('id in('.$id.')');
backmsg();
}
public function dellogAjax()
{
$id = c('check')->onlynumber($this->post('id'));
m('log')->delete('id in('.$id.')');
backmsg();
}
public function clearlogAjax()
{
$lx = (int)$this->get('lx','0');
$where = "`type`='异步队列'";
if($lx==0)$where = '1=1';
m('log')->delete($where);
return returnsuccess();
}
public function saveautherAjax()
{
if(getconfig('systype')=='demo')exit('演示上不要操作');
$autherkey = $this->post('key');
$ym = $this->post('ym');
$barr = c('xinhuapi')->authercheck($autherkey, $ym);
if($barr['success']){
echo 'ok';
}else{
echo $barr['msg'];
}
}
public function savelixianAjax()
{
if(getconfig('systype')=='demo')exit('演示上不要操作');
$aukey = $this->post('key');
$ym = $this->post('ym');
$path = 'config/rockauther.php';
if(!file_exists($path))exit('没有下载签授文件到系统上');
$da = require($path);
$barr = c('xinhuapi')->autherfile($da, $aukey, $ym);
if($barr['success']){
@unlink($path);
echo 'ok';
}else{
echo $barr['msg'];
}
}
public function autherAjax()
{
$aukey = $this->option->getval('auther_aukey');
$use = '1';
$barr = array();
if(isempt($aukey)){
$use = '0';
}else{
$barr['enddt'] = $this->option->getval('auther_enddt');
$barr['yuming']= $this->option->getval('auther_yuming');
$barr['aukey'] = substr($aukey,0,5).'****'.substr($aukey,-5);
}
$barr['use'] = $use;
return returnsuccess($barr);
}
public function autherdelAjax()
{
if(getconfig('systype')=='demo')return returnerror('演示上不要操作');
return c('xinhuapi')->autherdel();
}
public function tongbudwAjax()
{
$rows = m('company')->getall('iscreate=1');
foreach($rows as $k=>$rs){
$base = ''.DB_BASE.'_company_'.$rs['num'].'';
$this->sevessee($base, 'auther_aukey');
$this->sevessee($base, 'auther_enddt');
$this->sevessee($base, 'auther_yuming');
$this->sevessee($base, 'auther_authkey');
}
return '同步成功';
}
private function sevessee($base, $key)
{
$val = $this->option->getval($key);
$sql = "update ".$base.".`[Q]option` set `value`='$val',`optdt`='{$this->now}' where `num`='$key'";
$this->db->query($sql, false);
}
/**
* 更多保存设置
*/
public function savemoresetAjax()
{
if(getconfig('systype')=='demo')return '演示不要改';
$stype = (int)$this->post('stype','0');
$msg = 'ok';
if($stype==0)$msg = $this->saveconfig('title,imgcompress,watertype,video_bool,flowchehuitime,saasmode,hoemtimeout,usercache,xiangrecord,beianhao,locallang',',video_bool,');
return $msg;
}
private function saveconfig($cont, $bsto)
{
$path = ''.P.'/'.P.'Config.php';
$neir = file_get_contents($path);
$zdar = explode(',', $cont);
$neira= explode("\n", $neir);
$strs = '';
$szida= array();
foreach($neira as $line){
if($line==');')break;
$bo = false;
foreach($zdar as $fid){
if(contain($line,"'".$fid."'")){
$val = $this->post($fid);
if(contain($val,'*****')){
$strs.="".$line."\n";
}else{
$val = $this->rock->xssrepstr($val);
$vals = "'".$val."'";
if(contain($bsto,','.$fid.','))$vals = ($val=='1') ? 'true' : 'false';
$strs.=" '".$fid."' => ".$vals.",\n";
}
$bo = true;
$szida[]=$fid;
}
}
if(!$bo)$strs.="".$line."\n";
}
foreach($zdar as $fid){
if(!in_array($fid, $szida)){
$val = $this->post($fid);
$strs.=" '".$fid."' => '".$val."',\n";
}
}
$strs.=');';
$bo = @file_put_contents($path,$strs);
if(!$bo)return '无权限写入:'.$path.'';
return 'ok';
}
public function getmodeAjax()
{
$modearr = m('mode')->getmodearr('all');
return array(
'modearr' => $modearr
);
}
public function savemodeAjax()
{
if(getconfig('systype')=='demo')return '演示不要改';
$dbs = m('mode');
$allnum = $this->post('allnum');
$allarr = explode(',', $allnum);
$allstr = "'".str_replace(',',"','", $allnum)."'";
$dbs->update('status=0', "`type`<>'系统' and `num` not in($allstr)");
$dbs->update('status=1', "`num` in($allstr)");
//菜单更新
$menuarr = $dbs->menulist();
$mdb = m('menu');
$cdid = '';
foreach($menuarr as $bh=>$vs){
if($bh=='wxgzh' || $bh=='ding' || $bh=='weixinqy')continue;
$zt = 0;
if(contain($allstr,"'".$bh."'")){
$zt = 1;
$cdid.=','.$vs.'';
}
$mdb->update('`status`='.$zt.'', '`id` in('.$vs.')');
}
$menuarr = $dbs->yinglist();
$mdb = m('im_group');
foreach($menuarr as $bh=>$vs){
$zt = 1;
if(!contain($allstr,"'".$bh."'")){
$zt = 0;
}
$mdb->update('`valid`='.$zt.'', '`id` in('.$vs.')');
}
$tdb= m('task');
$hdb= m('homeitems');
$zt = contain($allstr,"'kqdkjl'") ? 1 : 0;
$tdb->update("`status`='$zt'", "`fenlei`='考勤'");
$hdb->update("`status`='$zt'", "`num` in('kqdk','kqtotal')");
$zt = contain($allstr,"'userract'") ? 1 : 0;
$tdb->update("`status`='$zt'", "`fenlei`='人事'");
$zt = contain($allstr,"'officic'") ? 1 : 0;
$hdb->update("`status`='$zt'", "`num` in('officic')");
$zt = contain($allstr,"'meet'") ? 1 : 0;
$hdb->update("`status`='$zt'", "`num` in('meet')");
$zt = contain($allstr,"'bianjian'") ? 1 : 0;
$hdb->update("`status`='$zt'", "`num` in('bianjian')");
$zt = contain($allstr,"'gong'") ? 1 : 0;
$hdb->update("`status`='$zt'", "`num` in('gong')");
return '保存成功';
}
}