get('id'); $data = m('flow_set')->getone($id); $arr = array( 'data' => $data ); echo json_encode($arr); } public function modeafter($table, $rows) { return array( 'qian' => PREFIX ); } public function modebefore($table) { $where = ''; $key = $this->post('key'); if(!isempt($key)){ $where = "and (`type`='$key' or `name` like '%$key%' or `table` like '$key%' or `num` like '$key%' or `sericnum` like '$key%')"; } return $where; } public function getcompanydataAjax() { $rows = array(); $msg = ''; if(!getconfig('platdwnum')){ $msg = '当前不是SAAS模式不需要操作'; }else{ if(!COMPANYNUM){ $rows = m('company')->getall('`iscreate`=1','id,name'); if(!$rows)$msg='没有创建过任何单位'; }else{ $msg = '请在管理模式下操作'; } } return returnsuccess($rows, $msg); } public function flowwheresave_before($table,$das) { $str = m('where')->checkwhere($das['setid'], $das['wheresstr']); if($str)return $str; } public function flowmenusave_before($table,$das) { $str = m('where')->checkwhere($das['setid'], $das['wherestr']); if($str)return $str; } private function getwherelist($setid) { return m('flow_where')->getall('setid='.$setid.'','id,name','sort'); } public function loaddatacourseAjax() { $id = (int)$this->get('id'); $setid = (int)$this->get('setid'); $data = m('flow_course')->getone($id); $arr = array( 'data' => $data, 'wherelist' => $this->getwherelist($setid), 'statusstr' => m('flow_set')->getmou('statusstr', $setid) ); echo json_encode($arr); } public function loaddatawhereAjax() { $id = (int)$this->get('id'); $data = m('flow_where')->getone($id); $arr = array( 'data' => $data, ); echo json_encode($arr); } public function flowsetsavebefore($table, $cans) { $tab = $cans['table']; $tabs= trim($cans['tables']); $names= trim($cans['names']); $name= $this->rock->xssrepstr($cans['name']); $num = strtolower($cans['num']); $cobj= c('check'); if(!$cobj->iszgen($tab))return '表名格式不对'; $bobg = preg_replace("/[a-zA-Z0-9_]/",'', $tab); if($bobg)return '表名禁用:'.$bobg.''; if($cobj->isnumber($num))return '编号不能为数字'; if(strlen($num)<4)return '编号至少要4位'; if($cobj->isincn($num))return '编号不能包含中文'; if(contain($num,'-'))return '编号不能有-'; $bobg = preg_replace("/[a-zA-Z0-9_]/",'', $num); if($bobg)return '模块编号禁用:'.$bobg.''; if($cans['isflow']>0 && isempt($cans['sericnum'])) return '有流程必须有写编号规则,请参考其他模块填写'; $rows['num']= $this->rock->xssrepstr($num); $rows['name']= $name; if(!isempt($tabs)){ if($cobj->isincn($tabs))return '多行子表名不能包含中文'; $bobg = preg_replace("/[a-zA-Z0-9_,]/",'', $tabs); if($bobg)return '子表名禁用:'.$bobg.''; $tabsa = explode(',', $tabs); $namea = explode(',', $names); foreach($tabsa as $k1=>$tabsas){ if(isempt($tabsas))return '多行子表名('.$tabs.')不规范'; if(isempt(arrvalue($namea, $k1)))return '第'.($k1+1).'个多行子表名称必须填写'; } } $rows['tables']= $tabs; if($cans['where'])$rows['where'] = htmlspecialchars_decode($cans['where']); return array( 'rows' => $rows ); } private function setsubtsta($tabs, $alltabls, $tab, $slxbo, $ssm) { if(isempt($tabs))return; if(!in_array(''.PREFIX.''.$tabs.'', $alltabls)){ $sql = "CREATE TABLE `[Q]".$tabs."` ( `id` int(11) NOT NULL AUTO_INCREMENT, `mid` int(11) DEFAULT '0' COMMENT '对应主表".$tab.".id', `sort` int(11) DEFAULT '0' COMMENT '排序号', `comid` smallint(6) DEFAULT '0' COMMENT '对应单位id', PRIMARY KEY (`id`),KEY `mid` (`mid`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;"; $bo = $this->db->query($sql); }else{ $fields = $this->db->getallfields(''.PREFIX.''.$tabs.''); $str = ''; if(!in_array('mid', $fields))$str.=",add `mid` int(11) DEFAULT '0' COMMENT '对应主表".$tab.".id'"; if(!in_array('sort', $fields))$str.=",add `sort` int(11) DEFAULT '0' COMMENT '排序号'"; if(!in_array('comid', $fields))$str.=",add `comid` smallint(6) DEFAULT '0' COMMENT '对应单位id'"; if($slxbo && !in_array('sslx', $fields)){ $ssma = explode(',', $ssm); $ss1 = ''; foreach($ssma as $k=>$ssmas)$ss1.=','.$k.''.$ssmas.''; if($ss1!='')$ss1 = substr($ss1, 1); $str.=",add `sslx` tinyint(1) DEFAULT '0' COMMENT '".$ss1."'"; } if($str!=''){ $sql = 'alter table `'.PREFIX.''.$tabs.'` '.substr($str,1).''; $this->db->query($sql); } } } public function flowsetsaveafter($table, $cans) { $isflow = $cans['isflow']; $name = $cans['name']; $tab = $cans['table']; $tabs = $cans['tables']; $alltabls = array(); //创建保存多行子表 if(!isempt($tabs)){ $alltabls = $this->db->getalltable(); $tabsa = explode(',', $tabs); $addsts = array(); foreach($tabsa as $tabsas){ $this->setsubtsta($tabsas, $alltabls, $tab, in_array($tabsas, $addsts), $cans['names']); $alltabls[] = ''.PREFIX.''.$tabsas.''; $addsts[] = $tabsas; } } $noarray = array('menu','flow_set','flow_element','flow_menu','flow_bill','flow_extent','flow_where'); if(isempt($tab))return; if(in_array($tab, $noarray))return; if(!$alltabls)$alltabls = $this->db->getalltable(); if($isflow==0){ if(!in_array(''.PREFIX.''.$tab.'', $alltabls)){ $sql = "CREATE TABLE `[Q]".$tab."` (`id` int(11) NOT NULL AUTO_INCREMENT,`comid` smallint(6) DEFAULT '0' COMMENT '对应单位id',`uid` int(11) DEFAULT '0',`optid` int(11) DEFAULT '0' COMMENT '操作人id',`optname` varchar(20) DEFAULT NULL COMMENT '操作人',`optdt` datetime DEFAULT NULL COMMENT '操作时间',PRIMARY KEY (`id`))ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='$name';"; $bo = $this->db->query($sql); }else{ $fields = $this->db->getallfields(''.PREFIX.''.$tab.''); $str = ''; if(!in_array('comid', $fields) && !in_array('companyid', $fields))$str.=",add `comid` smallint(6) DEFAULT '0' COMMENT '对应单位id'"; if($str!=''){ $sql = 'alter table `'.PREFIX.''.$tab.'` '.substr($str,1).''; $this->db->query($sql); } } return; } if(!in_array(''.PREFIX.''.$tab.'', $alltabls)){ $sql = "CREATE TABLE `[Q]".$tab."` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) DEFAULT '0', `optdt` datetime DEFAULT NULL COMMENT '操作时间', `optid` int(11) DEFAULT '0', `optname` varchar(20) DEFAULT NULL COMMENT '操作人', `applydt` date DEFAULT NULL COMMENT '申请日期', `explain` varchar(500) DEFAULT NULL COMMENT '说明', `status` tinyint(1) DEFAULT '1' COMMENT '状态', `isturn` tinyint(1) DEFAULT '1' COMMENT '是否提交', `comid` smallint(6) DEFAULT '0' COMMENT '对应单位id', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='$name';"; $bo = $this->db->query($sql); }else{ $fields = $this->db->getallfields(''.PREFIX.''.$tab.''); $str = ''; if(!in_array('uid', $fields))$str.=",add `uid` int(11) DEFAULT '0'"; if(!in_array('optdt', $fields))$str.=",add `optdt` datetime DEFAULT NULL COMMENT '操作时间'"; if(!in_array('optid', $fields))$str.=",add `optid` int(11) DEFAULT '0'"; if(!in_array('optname', $fields))$str.=",add `optname` varchar(20) DEFAULT NULL COMMENT '操作人'"; if(!in_array('applydt', $fields))$str.=",add `applydt` date DEFAULT NULL COMMENT '申请日期'"; if(!in_array('explain', $fields))$str.=",add `explain` varchar(500) DEFAULT NULL COMMENT '说明'"; if(!in_array('status', $fields))$str.=",add `status` tinyint(1) DEFAULT '1' COMMENT '状态'"; if(!in_array('isturn', $fields))$str.=",add `isturn` tinyint(1) DEFAULT '1' COMMENT '是否提交'"; if(!in_array('comid', $fields) && !in_array('companyid', $fields))$str.=",add `comid` smallint(6) DEFAULT '0' COMMENT '对应单位id'"; if($str!=''){ $sql = 'alter table `'.PREFIX.''.$tab.'` '.substr($str,1).''; $this->db->query($sql); } } } public function elementafter($table, $rows) { $moders = m('flow_set')->getone($this->mid); $farrs = array(); if($this->mid>0){ $tass = $moders['table']; $tasss = $moders['tables']; $farr = $this->db->gettablefields('[Q]'.$tass.''); $farrs[]= array('id'=>'','name'=>'————↓以下主表('.$tass.')的字段————'); foreach($farr as $k=>$rs){ $farrs[]= array('id'=>$rs['name'],'name'=>'['.$rs['name'].']'.$rs['explain'].''); } if(!isempt($tasss)){ $tasssa = explode(',', $tasss); foreach($tasssa as $k=>$tasss){ $farr = $this->db->gettablefields('[Q]'.$tasss.''); $farrs[]= array('id'=>'','name'=>'————↓以下第'.($k+1).'个多行子表('.$tasss.')的字段————'); foreach($farr as $k=>$rs){ $farrs[]= array('id'=>$rs['name'],'name'=>'['.$rs['name'].']'.$rs['explain'].''); } } } } return array( 'flowarr'=>$this->getmodearr(), 'moders'=>$moders, 'fieldsarr' => $farrs, 'fieldstypearr'=> $this->option->getdata('flowinputtype') ); } public $mid; public function elementbefore($table) { $mid = (int)$this->post('mid'); $this->mid = $mid; return array( 'where' => 'and `mid`='.$mid.'', 'order' => 'iszb,sort,id' ); } //模块多模版 public function modetpl_before($table) { $mid = (int)$this->post('mid'); $this->mid = $mid; return array( 'where' => 'and `setid`='.$mid.'', 'order' => 'sort,id' ); } public function modetpl_after($table, $rows) { return array( 'flowarr'=>$this->getmodearr(' and `istpl`=1') ); } public function modetpledit_before($table) { $mid = (int)$this->post('mid'); $this->mid = $mid; return array( 'where' => 'and `mid`='.$mid.' and `iszb`=0', 'order' => 'sort,id' ); } public function modetpledit_after($table, $rows) { $sid = (int)$this->post('sid'); $data = false; $fieldsluru = $fieldsbitian = ''; if($sid>0){ $data = m('flow_modetpl')->getone($sid); $fieldsluru = $data['fieldsluru']; $fieldsbitian = $data['fieldsbitian']; foreach($rows as $k=>$rs){ if(!isempt($fieldsluru)){ $islu = 0; if(contain(','.$fieldsluru.',',','.$rs['fields'].','))$islu=1; $rows[$k]['islu'] = $islu; } if(!isempt($fieldsbitian)){ $isbt = 0; if(contain(','.$fieldsbitian.',',','.$rs['fields'].','))$isbt=1; $rows[$k]['isbt'] = $isbt; } } } return array( 'data' => $data, 'rows' => $rows, ); } public function modetpl_savefieldsbefore($table, $cans) { $tplnum = $cans['tplnum']; if(c('check')->isincn($tplnum))return '编号不能包含中文'; $id = (int)$this->post('id'); if(m($table)->rows("`tplnum`='$tplnum' and `id`<>'$id'")>0)return '编号已经存在'; } public function modetpl_savefieldsafter($table, $cans) { $mid = $cans['setid']; $tab = m('mode')->getmou('`table`',$mid); if(!isempt($tab)){ $fields = $this->db->getallfields(''.PREFIX.''.$tab.''); $str = ''; if(!in_array('mtplid', $fields))$str.=",add `mtplid` int(11) DEFAULT '0' COMMENT '对应多模版flow_modetpl.id'"; if($str!=''){ $sql = 'alter table `'.PREFIX.''.$tab.'` '.substr($str,1).''; $this->db->query($sql); } } } //单据操作菜单 public function flowmenubefore($table) { $mid = (int)$this->post('mid'); $this->mid = $mid; return 'and `setid`='.$mid.''; } public function flowmenuafter($table, $rows) { return array( 'flowarr'=>$this->getmodearr() ); } //条件where public function flowwhereafter($table, $rows) { return array( 'flowarr'=> $this->getmodearr() ); } public function flowwherebefore($table) { return array( 'table' => '`[Q]'.$table.'` a left join `[Q]flow_set` b on a.setid=b.id', 'fields'=> 'a.*,b.num as modenum,b.name as modename' ); } //单据通知设置 public function flowtodobefore($table) { $mid = (int)$this->post('mid'); $this->mid = $mid; $where = ''; if($mid>0)$where = 'and `setid`='.$mid.''; return array( 'where' => $where, 'table' => '`[Q]'.$table.'` a left join `[Q]flow_set` b on a.setid=b.id', 'fields'=> 'a.*,b.name as modename' ); } public function flowtodoafter($table, $rows) { $fielslist = m('flow_element')->getrows("mid='$this->mid' and iszb=0 and islu=1",'fields,name','sort'); foreach($fielslist as &$v){ $v['name'] = ''.$v['fields'].'.'.$v['name'].''; } $courselist = m('flow_course')->getrows("setid='$this->mid' and `status`=1",'id,name','pid,sort'); foreach($courselist as &$v1){ $v1['name'] = ''.$v1['id'].'.'.$v1['name'].''; } $dbss = m('remind'); foreach($rows as $k=>$rs){ $whereid = ''; if($rs['whereid']>'0')$whereid = $this->db->getmou('[Q]flow_where','name', $rs['whereid']); $rows[$k]['whereidstr'] = $whereid; if($rs['botask']=='1'){ $rows[$k]['remindrs'] = $dbss->getremindrs('flow_todo', $rs['id']); } } return array( 'flowarr' => $this->getmodearr(), 'wherelist' => $this->getwherelist($this->mid), 'fielslist' => $fielslist, 'courselist' => $courselist, 'rows' => $rows ); } private function getmodearr($whe='') { return m('mode')->getmodearr($whe); } public function inputzsAction() { $setid = $this->get('setid'); $atype = (int)$this->get('atype','0'); $rs = m('flow_set')->getone("`id`='$setid'"); if(!$rs)exit('sorry!'); $this->smartydata['rs'] = $rs; $atypea = array('PC端','手机端','PC端打印'); $this->title = $rs['name'].'_'.$atypea[$atype].'展示页面设置'; $fleftarr = m('flow_element')->getrows("`mid`='$setid' and `iszb`=0",'`fields`,`name`','`iszb`,`sort`'); $modenum = $rs['num']; $fleft[]= array('base_name', '申请人',0); $fleft[]= array('base_deptname', '申请部门',0); $fleft[]= array('base_sericnum', '单号',0); $fleft[] = array('file_content', '相关文件',0); $iszb = 0; foreach($fleftarr as $k=>$brs){ $fleft[]= array($brs['fields'], $brs['name'], $iszb); } if(!isempt($rs['tables'])){ $tablea = explode(',', $rs['tables']); $namesa = explode(',', $rs['names']); $fleft[]= array('', '↓多行子表', 0); foreach($tablea as $k=>$rs1){ $fleft[]= array('subdata'.$k.'', $namesa[$k], 0); } } if($rs['isflow']>0){ $fleft[]= array('', '↓流程审核步骤', 0); $rows = m('flow_course')->getrows('setid='.$setid.' and `status`=1','id,name','pid,sort'); foreach($rows as $k=>$rs){ $fleft[]= array('course'.$rs['id'].'_all', ''.$rs['name'].'处理意见', 0); $fleft[]= array('course'.$rs['id'].'_name', ''.$rs['name'].'处理人', 0); $fleft[]= array('course'.$rs['id'].'_zt', ''.$rs['name'].'处理状态', 0); $fleft[]= array('course'.$rs['id'].'_dt', ''.$rs['name'].'处理时间', 0); $fleft[]= array('course'.$rs['id'].'_sm', ''.$rs['name'].'处理说明', 0); } } $this->smartydata['fleft'] = $fleft; $this->smartydata['atype'] = $atype; $path = ''.P.'/flow/page/view_'.$modenum.'_'.$atype.'.html'; $bianhao = $modenum; if(COMPANYNUM){ $path1 = ''.P.'/flow/page/view_'.$modenum.'_'.COMPANYNUM.'_'.$atype.'.html'; if(file_exists($path1)){ $path = $path1; $bianhao.='_'.COMPANYNUM.''; } } $content = ''; if(file_exists($path)){ $content = file_get_contents($path); } $this->smartydata['content'] = $content; $this->smartydata['bianhao'] = $bianhao; } public $setinputid = 0; public function inputAction() { $setid = (int)$this->get('setid','0'); if($this->setinputid>0)$setid = $this->setinputid; $atype = $this->get('atype'); $rs = m('flow_set')->getone("`id`='$setid'"); if(!$rs)exit('sorry!'); $rs['zibiaoshu'] = count(explode(',', (string)$rs['tables'])); $this->smartydata['rs'] = $rs; $this->title = $rs['name'].'_录入页面设置'; $fleftarr = m('flow_element')->getrows("`mid`='$setid'",'*','`iszb`,`sort`'); $modenum = $rs['num']; $fleft[]= array('base_name', '申请人',0); $fleft[]= array('base_deptname', '申请部门',0); $fleft[]= array('base_sericnum', '单号',0); $fleft[] = array('file_content', '相关文件',0); $iszb = 0; foreach($fleftarr as $k=>$brs){ $bt=''; if($brs['isbt']==1)$bt='*'; $iszbs = $brs['iszb']; if($iszbs>0&&$iszb != $iszbs){ $fleft[]= array('', '—第'.$iszbs.'个多行子表—', $iszbs); $fleft[]= array('xuhao', '序号', $iszbs); } $iszb = $iszbs; $fleft[]= array($brs['fields'], $bt.$brs['name'], $iszb); } $this->smartydata['fleft'] = $fleft; $bianhao = $modenum; $path = ''.P.'/flow/page/input_'.$modenum.'.html'; if(COMPANYNUM){ $path1 = ''.P.'/flow/page/input_'.$modenum.'_'.COMPANYNUM.'.html'; if(file_exists($path1)){ $bianhao.='_'.COMPANYNUM.''; $path = $path1; } } $content = ''; if(file_exists($path)){ $content = file_get_contents($path); } $this->smartydata['bianhao'] = $bianhao; $this->smartydata['content'] = $content; $apaths = ''.P.'/flow/input/inputjs/mode_'.$modenum.'.js'; if(!file_exists($apaths)){ $stra='//流程模块【'.$modenum.'.'.$rs['name'].'】下录入页面自定义js页面,初始函数 function initbodys(){ }'; $this->rock->createtxt($apaths, $stra); } $apaths = ''.P.'/flow/input/mode_'.$modenum.'Action.php'; $apath = ''.ROOT_PATH.'/'.$apaths.''; if(!file_exists($apath)){ $stra = '\'错误提示内容\',\'rows\'=> array()) 可返回空字符串,或者数组 rows 是可同时保存到数据库上数组 */ protected function savebefore($table, $arr, $id, $addbo){ } /** * 重写函数:保存后处理,主要保存其他表数据 * $table String 对应表名 * $arr Array 表单参数 * $id Int 对应表上记录Id * $addbo Boolean 是否添加时 */ protected function saveafter($table, $arr, $id, $addbo){ } } '; $this->rock->createtxt($apaths, $stra); } if(!file_exists($apath))echo '
无法创建文件:'.$apaths.',会导致录入数据无法保存,请手动创建!代码内容如下:
<?php
class mode_'.$modenum.'ClassAction extends inputAction
{
}
'; } private function geuolvstr($str) { $str = str_replace(array('geuolvstr($this->post('content')); $num = $this->geuolvstra($this->post('num')); if(m('flow_set')->rows("`num`='$num'")==0)return; $path = ''.P.'/flow/page/input_'.$num.'.html'; if(COMPANYNUM)$path = ''.P.'/flow/page/input_'.$num.'_'.COMPANYNUM.'.html'; $bo = $this->rock->createtxt($path, $content); if(!$bo){ echo '无法写入文件:'.$path.''; }else{ echo 'success'; } } public function viewsaveAjax() { $content = $this->geuolvstr($this->post('content')); $num = $this->geuolvstra($this->post('num')); if(m('flow_set')->rows("`num`='$num'")==0)return; $atype = (int)$this->post('atype','0'); $path = ''.P.'/flow/page/view_'.$num.'_'.$atype.'.html'; if(COMPANYNUM){ $path = ''.P.'/flow/page/view_'.$num.'_'.COMPANYNUM.'_'.$atype.'.html'; } if(isempt($content)){ @unlink($path); return 'success'; } $bo = $this->rock->createtxt($path, $content); if(!$bo){ echo '无法写入文件:'.$path.''; }else{ echo 'success'; } } public function getinputAjax() { $num = $this->post('num'); $path = ''.P.'/flow/page/input_'.$num.'.html'; $cont = ''; if(file_exists($path)){ $cont = file_get_contents($path); $cont = str_replace('*','', $cont); } echo $cont; } public function getsubtableAjax() { $iszb = (int)$this->post('iszb'); $hang = (int)$this->post('hang'); $modeid = (int)$this->post('modeid'); $str = m('input')->getsubtable($modeid, $iszb, $hang); if($str=='')$this->backmsg('没有设置第'.$iszb.'个多行子表'); $this->backmsg('','ok', $str); } //一键布局录入页 public $yinruonearr = false; public function yinruoneAjax() { if($this->yinruonearr){ $modeid = $this->yinruonearr['modeid']; $xgwj = (int)arrvalue($this->yinruonearr, 'xgwj'); $base = (int)arrvalue($this->yinruonearr, 'base'); }else{ $modeid = (int)$this->post('modeid'); $xgwj = (int)$this->post('xgwj'); $base = (int)$this->post('base'); } $mrs = m('mode')->getone($modeid); $rowsa = m('flow_element')->getall('mid='.$modeid.' and `iszb`=0 and `islu`=1','*','sort,id'); $yczd = ''; $rows = array(); $fzuar = array(); foreach($rowsa as $k1=>$rs1){ if($rs1['fieldstype']=='hidden' || $rs1['fieldstype']=='fixed'){ $yczd.='{'.$rs1['fields'].'}'; }else{ $rows[] = $rs1; $ftype = arrvalue($rs1, 'ftype'); if(isempt($ftype))$ftype = 'defv'; if(!isset($fzuar[$ftype]))$fzuar[$ftype] = array(); $fzuar[$ftype][]= $rs1; } } $xichu = 0; $s = ''; foreach($fzuar as $fl=>$fstra){ $xichu++; if($xichu>1){ $s.=''; } if($fl!='defv'){ $s.='
'.$fl.'
'; } $str1 = $this->yubustsin($fstra, $yczd); $s.=$str1; $yczd = ''; } $tables = $mrs['tables']; if(!isempt($tables)){ $tablesa = explode(',', $tables); $tablesn = explode(',', $mrs['names']); foreach($tablesa as $k=>$tab){ $str = m('input')->getsubtable($modeid, $k+1, 1); $s.=''.arrvalue($tablesn, $k).''; $s.=''.$str.''; } } if($xgwj==1)$s.='^file_content^ {file_content}'; if($base==1)$s.='^base_name^{base_name}^base_deptname^{base_deptname}'; $s.=''; return $s; } public function yubustsin($rows, $yczd) { $zhang = array('textarea','htmlediter','uploadfile','uploadimg','changedeptusercheck'); $s = ''; $xuo = 0; $zlen= count($rows)-1; foreach($rows as $k=>$rs){ $xuo++; $name = '^'.$rs['fields'].'^'; if($rs['isbt']=='1')$name='*'.$name.''; if(in_array($rs['fieldstype'], $zhang) || contain($rs['attr'],'maxhang')){ if($xuo==2)$s.=''; $s.=''; if($xuo==1)$xuo=2; }else{ $s.=''; } $yczd=''; if($xuo==2){ $s.=''; if($k<$zlen)$s.=''; $xuo=0; } if($xuo==1 && $k==$zlen){ $s.=''; } } return $s; } public function getmodearrAjax() { $arr = $this->getmodearr(); $this->backmsg('','ok', $arr); } public function viewshowbefore($table) { $this->modeid = (int)$this->post('modeid'); if($this->modeid==0){ return 'and 1=2'; } $this->moders = m('flow_set')->getone($this->modeid); $this->isflow = $this->moders['isflow']; $table = $this->moders['table']; $where = $this->moders['where']; if(!isempt($where)){ $where = $this->rock->covexec($where); $where = "and $where"; } return array( 'table' => '[Q]'.$table, 'where' => $where ); } public function viewshowafter($table, $rows) { $arr = array(); if($rows){ $flow = m('flow')->initflow($this->moders['num']); $mbil = m('flowbill'); $mcom = m('company'); foreach($rows as $k=>$rs){ $zt = ''; if(isset($rs['status']))$zt = $rs['status']; $narr['id'] = $rs['id']; $narr['ishui'] = ($zt=='5')?1:0; $narr['optname'] = arrvalue($rs,'optname'); $narr['modenum'] = $this->moders['num']; $narr['modename'] = $this->moders['name']; $narr['table'] = $this->moders['table']; $narr['optdt'] = arrvalue($rs,'optdt'); $nors = $flow->rsreplace($rs, 2, null, 1); $narr['summary'] = $this->rock->reparr($this->moders['summary'], $nors); $otehsr = ''; if($flow->isflow>0){ $billrs = $flow->billmodel->getone("`table`='$flow->mtable' and `mid`='".$rs['id']."'"); $otehsr = arrvalue($billrs, 'nowcheckname'); $narr['udeptname'] = arrvalue($billrs, 'udeptname'); $narr['optname'] = arrvalue($billrs, 'uname'); }else{ $uid = arrvalue($rs,'uid'); if(!$uid)$uid = arrvalue($rs,'optid'); if($uid){ $urs = $flow->adminmodel->getXinxi($uid); if($urs){ $narr['udeptname'] = $urs['deptname']; $narr['optname'] = $urs['name']; } } } $narr['status'] = $flow->getstatus($rs,'',$otehsr,1); $narr['chushu'] = $flow->flogmodel->rows("`table`='".$flow->mtable."' and `mid`='".$rs['id']."'"); $comid = arrvalue($rs,'comid'); $narr['comid'] = $comid; if($comid){ $cmrs = $mcom->getXinxi($rs['comid']); if($cmrs)$narr['comid'] = $cmrs['id'].'.'.$cmrs['name']; } $arr[] = $narr; } } return array('rows'=>$arr); } public function viewlogshowbefore($table) { $where = "and `table`='".$this->post('num')."' and `mid`='".$this->post('mid')."'"; return array( 'where' => $where ); } //删除单据,用户=1不需要权限判断 public function delmodeshujuAjax() { $this->modeid = (int)$this->post('modeid'); $mid = (int)$this->post('mid'); $modenum = $this->post('modenum'); if($this->modeid>0){ $this->moders = m('flow_set')->getone($this->modeid); if(!$this->moders)backmsg('sorry!'); $modenum = $this->moders['num']; } if(isempt($modenum))backmsg('操作有误'); $msg = m('flow')->deletebill($modenum, $mid, '', $this->adminid!=1); if($msg=='ok')$msg=''; backmsg($msg); } //元素保存之前判断 public function elemensavefieldsbefore($table, $cans, $id) { $iszb = (int)$cans['iszb']; $fields = $cans['fields']; $type = $cans['fieldstype']; $data = $cans['data']; if(c('check')->isincn($fields))return '对应字段不能有汉字'; if(c('check')->isnumber($fields))return '对应字段不能是数字'; if($type=='selectdatafalse' || $type=='selectdatatrue'){ if(isempt($data))return '此类型数据源必须设置如写:'.$fields.'store'; if(contain(','.$data.',',',id,'))return '数据源不能包含,id'; } $mid = $cans['mid']; $this->mmoders = m('flow_set')->getone($mid); $tablessa = explode(',', $this->mmoders['tables']); if($iszb>0){ $tabsss = $this->rock->arrvalue($tablessa, $iszb-1); if(isempt($tabsss))return '模块没有设置第'.$iszb.'个多行子表'; } if(m($table)->rows("`mid`='$mid' and `iszb`='$iszb' and `fields`='$fields' and `id`<>'$id'")>0){ return '字段['.$fields.']已存在了'; } } //保存字段判断,自动创建字段 public function elemensavefields($table, $cans) { $fields = $cans['fields']; $name = $cans['name']; $mid = $cans['mid']; $type = $cans['fieldstype']; $lens = $cans['lens']; $dev = $cans['dev']; $data = $cans['data']; $iszb = (int)$cans['iszb']; $this->xiaoshu = (int)arrvalue($cans,'xiaoshu','-1'); $mrs = $this->mmoders; $tables = $mrs['table']; if($iszb>0){ $tables = ''; $tablessa = explode(',', $mrs['tables']); if(isset($tablessa[$iszb-1]))$tables = $tablessa[$iszb-1]; } $fiesss = substr($fields,0,5); if($fiesss == 'base_' || $fiesss == 'temp_')return; if(!isempt($tables) && $cans['islu']==1){ $_fieldsa = $this->db->gettablefields('[Q]'.$tables.'');$allfields = array();$this->rock->debugs($_fieldsa,'fields'); foreach($_fieldsa as $k2=>$rs2)$allfields[$rs2['name']] = $rs2; $this->createfields($allfields, $tables, $fields, $type, $lens, $dev, $name); if(substr($type,0,6)=='change' && !isempt($data)){ if($type=='changeuser' || $type=='changedept'){ $type='number'; } $this->createfields($allfields, $tables, $data, $type, $lens, '', $name.'的ID'); } } } //创建字段 private function createfields($allfields, $tables, $fields, $type, $lens, $dev, $name) { if(isempt($lens))$lens='0'; $lens = (int)$lens; if(!isset($allfields[$fields])){ $str = "ALTER TABLE `[Q]".$tables."` ADD `$fields` "; if($type=='date' || $type=='datetime' || $type=='time'){ $str .= ' '.$type.''; }else if($type=='number'){ if($this->xiaoshu>0){ if($lens<6)$lens = 6; $str .= ' decimal('.$lens.', '.$this->xiaoshu.')'; }else if($lens>6){ $str .= ' int('.$lens.')'; }else{ $str .= ' smallint(6)'; } }else if($type=='checkbox'){ $str .= ' tinyint(1)'; }else if($type=='textarea'){ $str .= ' varchar(2000)'; }else{ if($lens=='0')$lens='50'; $str .= ' varchar('.$lens.')'; } if(!isempt($dev) && !contain($dev,'{'))$str.= " DEFAULT '$dev'"; $str.= " COMMENT '$name'"; $this->db->query($str); }else{ $farr = $allfields[$fields]; $ustr = ''; $len = (int)$farr['lens']; $xslen1 = (int)arrvalue($farr,'xslen1','0'); $xslen2 = (int)arrvalue($farr,'xslen2','0'); if($farr['type']=='varchar'){ if($lens>$len)$ustr='varchar('.$lens.')'; } if($farr['type']=='smallint' || $farr['type']=='int'){ if($lens>6 && $lens>$len)$ustr='int('.$lens.')'; } if($farr['type']=='decimal'){ if($lens>$xslen1)$ustr= 'decimal('.$lens.', '.$xslen2.')'; } if($type=='date' || $type=='datetime'){ if($farr['type']!=$type){ $ustr= ''.$type.''; } } if($type=='number'){ if($lens<6)$lens = $xslen1; if($lens<6)$lens = 6; if($this->xiaoshu>0){ $ustr= 'decimal('.$lens.', '.$this->xiaoshu.')'; } } if($ustr!=''){ if(!isempt($dev) && !contain($dev,'{'))$ustr.= " DEFAULT '$dev'"; $ustr= "ALTER TABLE `[Q]".$tables."` MODIFY column `$fields` ".$ustr." COMMENT '$name'"; $this->db->query($ustr); } } } public function reloadpipeiAjax() { $mid = (int)$this->post('mid'); $whe = ''; if($mid>0)$whe=' and id='.$mid.''; echo m('flow')->repipei($whe); } public function setwherelistafter($table, $rows) { $dbs = m('flow_where'); foreach($rows as $k=>$rs){ $shu = $dbs->rows("`setid`='".$rs['id']."'"); if($shu>0)$rows[$k]['shu'] = $shu; } return array('rows'=>$rows); } public function setcourselistafter($table, $rows) { $dbs = m('flow_course'); foreach($rows as $k=>$rs){ $shu = $dbs->rows("`setid`='".$rs['id']."'"); if($shu>0)$rows[$k]['shu'] = $shu; } return array('rows'=>$rows); } public function setcourselistbefore($table) { $where = ''; $key = $this->post('key'); if(!isempt($key)){ $where = "and (`type`='$key' or `name` like '%$key%' or `table` like '$key%' or `num` like '$key%' or `sericnum` like '$key%')"; } return $where; } //删除模块 public function delmodeAjax() { $id = (int)$this->post('id','0'); return $this->delmode($id, true); } private function delmode($id, $dm=false) { if($this->getsession('isadmin')!='1')return '非管理员不能操作'; $mrs = m('flow_set')->getone($id); if(!$mrs)return '模块不存在'; $num = $mrs['num']; if($num!='demo' && $mrs['type']=='系统')return '系统类型模块不能删除清空'; /* //防止误删2024-09-11已弃用 $flow = m('flow')->initflow($num); $table = $mrs['table']; $where = $mrs['where']; if(!isempt($where)){ $where = $this->rock->covexec($where); $where = "and $where"; }else{ $where = ''; } $rows = m($table)->getrows('1=1 '.$where.''); foreach($rows as $k=>$rs){ $ssid = $rs['id']; $flow->loaddata($ssid, false); $flow->deletebill('清空模块数据', false); } */ $name = $mrs['name']; if($dm){ m('flow_set')->delete("`id`='$id'"); m('flow_course')->delete("`setid`='$id'"); m('flow_element')->delete("`mid`='$id'"); m('flow_extent')->delete("`modeid`='$id'"); m('flow_where')->delete("`setid`='$id'"); m('flow_menu')->delete("`setid`='$id'"); m('flow_todo')->delete("`setid`='$id'"); m('flow_todos')->delete("`modenum`='$num'"); m('log')->addlog('模块','删除模块['.$name.']'); }else{ m('log')->addlog('模块','清空模块['.$name.']的数据'); } //$this->db->query("alter table `[Q]$table` AUTO_INCREMENT=1"); return 'ok'; } //清空模块上数据 public function clearallmodeAjax() { $id = (int)$this->post('id','0'); return $this->delmode($id, false); } //刷新序号 public function rexuhaoAjax() { $mid = (int)$this->get('modeid'); $db = m('flow_element'); $rows = $db->getall('mid='.$mid.' and iszb=0','id','sort asc,id asc'); foreach($rows as $k=>$rs)$db->update('sort='.$k.'',$rs['id']); $rows = $db->getall('mid='.$mid.' and iszb=1','id','sort asc,id asc'); foreach($rows as $k=>$rs)$db->update('sort='.$k.'',$rs['id']); $rows = $db->getall('mid='.$mid.' and iszb=2','id','sort asc,id asc'); foreach($rows as $k=>$rs)$db->update('sort='.$k.'',$rs['id']); $rows = $db->getall('mid='.$mid.' and iszb=3','id','sort asc,id asc'); foreach($rows as $k=>$rs)$db->update('sort='.$k.'',$rs['id']); } public function flowcourselistbefore($rows) { return array('order'=>'pid,sort'); } //流程步骤显示 public function flowcourselistafter($table, $rows) { $arr = array();$pid = -1;$maxpid = -1; foreach($rows as $k=>$rs){ if($rs['pid'] != $pid){ $recename = $this->rock->arrvalue($rs, 'recename'); if(isempt($recename))$recename = '全体人员'; $arr[] = array( 'name' => '流程'.($rs['pid']+1).',适用:'.$recename.'', 'level' => 1, 'stotal'=> 1, 'status'=> 1, 'iszf' => 0, 'id' => $rs['id'], 'pid' => $rs['pid'], 'sort' => 0, 'recename' => '', ); } $rs['level'] = 2; $rs['stotal'] = 0; $arr[] = $rs; $pid = $rs['pid']; $maxpid = $pid; } return array( 'rows' => $arr, 'maxpid' => $maxpid+1, ); } //生成列表页面 public function changeliebAjax() { $modeid = (int)$this->post('modeid'); $path = m('mode')->createlistpage($modeid); if($path=='')$path = '无法生成,可能没权限写入'.P.'/flow/page目录'; echo $path; } //生成所有 public function allcreateAjax() { $dbs = m('mode'); $rows = $dbs->getall("`status`=1"); $oi = 0; $msg = ''; foreach($rows as $k=>$rs){ $path = $dbs->createlistpage($rs,1); if($path=='none')continue; if($path==''){ if($path=='')$msg = '无法生成,可能没权限写入'.P.'/flow/page目录'; break; }else{ $oi++; } } if($msg=='')$msg='已生成'.$oi.'个模块,可到'.P.'/flow/page下查看'; echo $msg; } public function savecolunmsAjax() { $num = $this->post('num'); $modeid = (int)$this->post('modeid'); $str = $this->post('str'); if($str){ $this->option->setval($num.'@'.(-1*$modeid-1000), $str,'模块列定义'); }else{ $this->option->delete("`num`='$num'"); } //$path = m('mode')->createlistpage($modeid); $msg = 'ok'; //if($path=='')$msg='已保存,但无法从新生成列表页,自定义列将不能生效'; echo $msg; } //选择人员组 public function getcnameAjax() { $arr = array(); $rows = m('flow_cname')->getall("`pid`=0 and `num` is not null",'num,name','`sort`'); foreach($rows as $k=>$rs)$arr[] = array('name'=>$rs['name'],'value'=>$rs['num']); return $arr; } //图形的流程管理 public function courseflowinitAjax() { $setid = (int)$this->get('setid','0'); return m('flowcourse')->getCoursedata($setid); } public function courseflowdelAjax() { $id = (int)$this->get('id','0'); m('flowcourse')->delete($id); } public function coursesavebefore($table, $arr) { $mid = (int)arrvalue($arr,'mid','0'); $setid = (int)arrvalue($arr,'setid','0'); $nid = (int)arrvalue($arr,'nid','0'); if($mid>0 && m($table)->rows("`setid`='$setid' and `id`='$mid'")==0)return '上级步骤ID['.$mid.']不存在'; if($nid>0 && m($table)->rows("`setid`='$setid' and `id`='$nid'")==0)return '下级步骤ID['.$nid.']不存在'; $str = m('where')->checkwhere($setid, $arr['where']); if($str)return $str; } public function getfieldsAjax() { $setid = (int)$this->get('setid','0'); $rows = m('flow_element')->getrows('`mid`='.$setid.' and `iszb`=0','name,fields,data,fieldstype','`sort`'); $arr = array(); foreach($rows as $k=>$rs){ //$arr[] = array( // 'name' => $rs['name'].'('.$rs['fields'].')', // 'value' => $rs['fields'], //); $fieldstype = $rs['fieldstype']; if(in_array($fieldstype, array('changeuser','changeusercheck')) && !isempt($rs['data'])){ $arr[] = array( 'name' => $rs['name'].'('.$rs['data'].')', 'value' => $rs['data'], ); } } return $arr; } public function savebeforecname($table, $arr, $id) { $num = $arr['num']; $to = m('flowcname')->rows("`id`<>'$id' and `num`='$num'"); if($to>0)return '编号['.$num.']已存在'; } /** * 复制模块 */ public function copymodeAjax() { $id = (int)$this->post('id','0'); $bhnu = strtolower(trim($this->post('name'))); if(isempt($bhnu))return '新模块编号不能为空'; if(is_numeric($bhnu))return '模块编号不能用数字'; if(strlen($bhnu)<4)return '编号至少要4位'; if(c('check')->isincn($bhnu))return '编号不能包含中文'; $dbs = m('mode'); if($dbs->rows("`num`='$bhnu'")>0)return '模块编号['.$bhnu.']已存在'; $mrs = $dbs->getone($id); if(!$mrs)return '模块不存在'; $ars = $mrs; $name = $mrs['name'].'复制'; $biaom = $bhnu; $obha = $mrs['num']; unset($ars['id']); $ars['name'] = $name; $ars['num'] = $bhnu; $ars['table']= $biaom; $tablea[] = $mrs['table']; $tables = ''; if(!isempt($ars['tables'])){ $staba = explode(',', $ars['tables']); foreach($staba as $kz=>$zb1){ $tables.=','.$biaom.'zb'.($kz+1).''; if(!in_array($zb1, $tablea))$tablea[]=$zb1; } $tables = substr($tables, 1); } $ars['tables'] = $tables; $modeid = $dbs->insert($ars); //复制表 foreach($tablea as $kz=>$tabs){ $sqla = $this->db->getall('show create table `[Q]'.$tabs.'`'); $createsql = $sqla[0]['Create Table']; $biaom1 = ''.PREFIX.''.$biaom.''; if($kz>0)$biaom1 = ''.PREFIX.''.$biaom.'zb'.$kz.''; $createsql = str_replace('`'.PREFIX.''.$tabs.'`','`'.$biaom1.'`',$createsql); $this->db->query($createsql); $this->db->query('alter table `'.$biaom1.'` AUTO_INCREMENT=1'); } //复制表单元素 $db1 = m('flow_element'); $rows = $db1->getall('mid='.$id.''); foreach($rows as $k1=>$rs1){ $rs2 = $rs1; unset($rs2['id']); $rs2['mid'] = $modeid; $db1->insert($rs2); } //复制相关布局文件 $hurs = $this->getfiles(); foreach($hurs as $k=>$file){ $from = str_replace('{bh}',$obha,$file); $to = str_replace('{bh}',$bhnu,$file); if(file_exists($from)){ if($k<=1){ $fstr = file_get_contents($from); if($k==0)$fstr = str_replace('flow_'.$obha.'ClassModel','flow_'.$bhnu.'ClassModel',$fstr); if($k==1)$fstr = str_replace('mode_'.$obha.'ClassAction','mode_'.$bhnu.'ClassAction',$fstr); $this->rock->createtxt($to, $fstr); }else{ @copy($from, $to); } } } echo 'ok'; } public function getfiles() { $hurs[] = ''.P.'/model/flow/{bh}Model.php'; //模块接口文件 $hurs[] = ''.P.'/flow/input/mode_{bh}Action.php'; //模块控制器 $hurs[] = ''.P.'/flow/input/inputjs/mode_{bh}.js'; //模块录入js文件 $hurs[] = ''.P.'/flow/page/input_{bh}.html'; //PC录入模版 $hurs[] = ''.P.'/flow/page/view_{bh}_0.html'; //PC展示模版 $hurs[] = ''.P.'/flow/page/view_{bh}_1.html'; //手机展示模版 $hurs[] = ''.P.'/flow/page/view_{bh}_2.html'; //打印布局 $hurs[] = ''.P.'/flow/page/viewpage_{bh}.html'; //子模版展示 $hurs[] = ''.P.'/flow/page/viewpage_{bh}_0.html';//子模版PC展示 $hurs[] = ''.P.'/flow/page/viewpage_{bh}_1.html';//子模版手机展示 return $hurs; } public function loadmodeinfoAjax() { if(getconfig('systype')=='demo')return returnerror('演示不要操作'); if(!getconfig('rockinzip'))return returnerror('系统未开启此功能'); $sid = $this->get('sid'); $rows = m('flow_set')->getall('`id` in('.$sid.')','*','sort asc'); $ids = ''; $mname= ''; $table= ''; $file = ''; $hurs = $this->getfiles(); $hurs[] = ''.P.'/flow/page/rock_page_{bh}.php'; $hurs[] = ''.P.'/flow/page/rock_page_{bh}_script.php'; foreach($rows as $k=>$rs){ $ids.=','.$rs['id'].''; $table.=','.$rs['table'].''; if(!isempt($rs['tables']))$table.=','.$rs['tables'].''; $mname.=''.$rs['name'].'('.$rs['num'].')  '; foreach($hurs as $k=>$wj){ $wjs = str_replace('{bh}',$rs['num'],$wj); if(file_exists($wjs))$file.=','.$wjs.''; } } if($ids)$ids = substr($ids,1); if($table)$table = substr($table,1); if($file)$file = substr($file,1); $barr['mode'] = $ids; $barr['mname'] = $mname; $barr['table'] = $table; $barr['file'] = $file; return returnsuccess($barr); } public function loadoteinAjax() { if(getconfig('systype')=='demo')return returnerror('演示不要操作'); if(!getconfig('rockinzip'))return returnerror('系统未开启此功能'); $lx = $this->post('lx'); $sid = $this->post('sid'); $barr = array(); $stsa = explode(',', $sid); if($lx==1){ $alltabls = $this->db->getalltable(); foreach($stsa as $tab){ if(!in_array(''.PREFIX.$tab.'', $alltabls))return returnerror(''.$tab.'表不存在'); } $barr['table'] = $sid; } if($lx==2){ foreach($stsa as $tab)if(!file_exists($tab))return returnerror(''.$tab.'文件不存在'); $barr['file'] = $sid; } if($lx==3){ $rows = m('menu')->getall('`id` in('.$sid.') and `status`=1'); $ids = ''; $mname= ''; foreach($rows as $k=>$rs){ $ids.=','.$rs['id'].''; $mname.=''.$rs['name'].'('.$rs['url'].')  '; } if($ids){ $barr['menu'] = substr($ids,1); $barr['menu_str'] = $mname; } } if($lx==4){ $rows = m('im_group')->getall('`id` in('.$sid.') and `valid`=1 and `type`=2'); $ids = ''; $mname= ''; $fstr = ''; foreach($rows as $k=>$rs){ $ids.=','.$rs['id'].''; $mname.=''.$rs['name'].'  '; $fstr.=','.$rs['face'].''; $fled = 'webmain/we/ying/yingyong/'.$rs['num'].'.html'; if(file_exists($fled))$fstr.=','.$fled.''; $fled = 'webmain/we/ying/yingyong/'.$rs['num'].'.js'; if(file_exists($fled))$fstr.=','.$fled.''; $fled = 'webmain/we/ying/yingyong/ying_'.$rs['num'].'Class.php'; if(file_exists($fled))$fstr.=','.$fled.''; $fled = 'webmain/model/agent/'.$rs['num'].'Model.php'; if(file_exists($fled))$fstr.=','.$fled.''; } if($ids){ $barr['agent'] = substr($ids,1); $barr['agent_str'] = $mname; } if($fstr)$barr['file'] = substr($fstr,1); } return returnsuccess($barr); } public function createinstseAjax() { if(!class_exists('ZipArchive'))return returnerror('没有zip扩展无法使用'); if(getconfig('systype')=='demo')return returnerror('演示不要操作'); if(!getconfig('rockinzip'))return returnerror('系统未开启此功能'); $name = $this->post('name'); if(!$name)$name=TITLE.'_生成包'; $signstr = ''; $str = " '$name', //名称 'ver' => '".$this->post('ver')."', //版本 'minver'=>'".VERSION."', 'zuozhe' => '".$this->post('zuozhe')."', //作者 'explain' => '".$this->post('explain')."', //说明 'updatedt'=> '$this->now', //时间 'signstr' => '$signstr', //这个是签名 );"; $path = ''.UPDIR.'/logs/xhazbao_'.time().''; $this->rock->createtxt(''.$path.'/installconfig/xinhuoa_config.php', $str); //复制文件 $file = $this->post('file'); if($file){ $filea = explode(',', $file); foreach($filea as $fid1){ if(file_exists($fid1)){ $this->rock->createdir($path.'/'.$fid1); copy(ROOT_PATH.'/'.$fid1, ROOT_PATH.'/'.$path.'/'.$fid1); } } } $data = array(); $modeid = $this->post('mode'); $menuid = $this->post('menu'); $tabless = $this->post('table'); $agentid = $this->post('agent'); if($menuid){ $rows = $this->db->getall("select * from `[Q]menu` where id in($menuid)"); $data['menu'] = $this->shangxiajich($rows,'pid'); } if($modeid){ //创建模块文件 $mode = $this->db->getall("select * from `[Q]flow_set` where `id` in($modeid)"); $cdata= array(); foreach($mode as $k=>$rs){ $id = $rs['id']; //元素 $flow_element = $this->db->getall("select * from `[Q]flow_element` where mid='$id'"); //权限 $flow_extent = $this->db->getall("select * from `[Q]flow_extent` where modeid='$id'"); //单据操作菜单 $flow_menu = $this->db->getall("select * from `[Q]flow_menu` where setid='$id'"); //模块条件 $flow_where = $this->db->getall("select * from `[Q]flow_where` where setid='$id'"); //审核步骤,有上下级关系 $flow_courses = $this->db->getall("select * from `[Q]flow_course` where setid='$id'"); $flow_course = $this->shangxiajich($flow_courses,'mid'); //单据通知设置 $flow_todo = $this->db->getall("select * from `[Q]flow_todo` where setid='$id'"); //unset($rs['id']); if($rs['isflow']>2)$rs['isflow']='1'; $cdata[$rs['num']] = array( 'flow_set' => $rs, 'flow_element' => $flow_element, 'flow_extent' => $flow_extent, 'flow_menu' => $flow_menu, 'flow_where' => $flow_where, 'flow_course' => $flow_course, 'flow_todo' => $flow_todo, ); } $data['mode'] = $cdata; } //应用的数据 if($agentid){ $yyrows = $this->db->getall("select * from `[Q]im_group` where valid=1 and type=2 and id in($agentid)"); $yydata = array(); foreach($yyrows as $k=>$rs){ $menu = $this->db->getall("select * from `[Q]im_menu` where mid='".$rs['id']."'"); $yydata[] = array( 'data' => $rs, 'menu' => $this->shangxiajich($menu,'pid', 'menusub') ); } $data['yydata']= $yydata; } if($data){ $this->rock->createtxt($path.'/installconfig/xinhuoa_data.json', json_encode($data)); } //数据库 if($tabless){ $data = array(); $yaotable = explode(',', $tabless); foreach($yaotable as $tabs){ $fields = $this->db->gettablefields(PREFIX.$tabs); $shwdat = array( 'fields' => $fields, ); $sqla = $this->db->getall('show create table `'.PREFIX.$tabs.'`'); $createsql = $sqla[0]['Create Table']; $crse = explode('ENGINE', $createsql); $createsql = $crse[0].'ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8'; $shwdat['createsql'] = str_replace('`'.PREFIX.$tabs.'`','`[Q]'.$tabs.'`', $createsql); $data[$tabs] = $shwdat; } if($data)$this->rock->createtxt($path.'/installconfig/xinhuoa_mysql.json', json_encode($data)); } $topath = UPDIR.'/logs/xinhuoa_install_'.time().'.zip'; $this->rock->createtxt($topath, ''); c('zip')->packzip($path, $topath); return returnsuccess('生成成功,点我下载。'); } //上下级处理 public function shangxiajich($rows, $fid, $ds='children') { $this->rsxiada = array(); $sarrr = array(); foreach($rows as $k=>$rs){ $children = $this->shangxiajichs($rows, $fid, $rs['id']); if($children)$rs[$ds] = $children; $sarrr[]= $rs; } $barr = array(); foreach($sarrr as $k=>$rs){ if(!isset($this->rsxiada[$rs['id']]))$barr[] = $rs; } return $barr; } public function shangxiajichs($rows, $fid, $pid) { $arr = array(); foreach($rows as $k=>$rs){ if($rs[$fid]==$pid){ $this->rsxiada[$rs['id']] = $rs['id']; $children = $this->shangxiajichs($rows, $fid, $rs['id']); if($children)$rs['children'] = $children; $arr[] = $rs; } } return $arr; } public function opentixingAjax() { $fields = $this->get('fields'); if(c('check')->onlynumber($fields))return '错误'; $value = (int)$this->get('value'); m('flow_set')->update("`$fields`='$value'", 'id>0'); return '处理成功'; } }
'.$name.'{'.$rs['fields'].'}'.$yczd.''.$name.'{'.$rs['fields'].'}'.$yczd.'