| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- <?php
- class flow_gongClassModel extends flowModel
- {
- private $readunarr = array();//未读人员
- private $logobj;
-
- public function initModel()
- {
- $this->logobj = m('log');
- }
-
- protected function flowchangedata(){
- $cont = c('html')->replace($this->rs['content']);
- $fm = $this->rs['fengmian'];
- if(!isempt($fm)){
- $cont='<div align="center"><img style="max-width:100%" src="'.$this->rock->gethttppath($fm).'"></div>'.$cont.'';
- }
- $url = $this->rs['url'];
- if(!isempt($url))$cont.='<div><a href="'.$url.'">打开相应地址>></a></div>';
- $this->rs['content'] = $cont;
- }
-
- public function flowrsreplace($rs, $lx=0)
- {
- $mintou = (int)arrvalue($rs, 'mintou','0');
- if($lx==2){
- $zt = $this->logobj->isread($this->mtable, $rs['id'], $this->adminid);
- if($zt>0)$rs['ishui']=1;
- }
- if($lx==1){
- $receid = $rs['receid'];
- if(isempt($receid))$receid='all';
- $barr = m('log')->getreadshu($this->mtable, $rs['id'],$receid , $rs['optdt'], $this->adminmodel);
- foreach($barr as $k=>$v)$rs[$k]=$v;
- $this->readunarr = $barr['wduarr'];
- }
- if($mintou>0){
- $rs['title'] .='(投票)';
- }
- return $rs;
- }
-
- protected function flowsubmit($na, $sm)
- {
- if($this->rs['status']==1)$this->tisongtodo();
- }
-
- //移动端列表
- private $ydarr = false;
- public function flowrsreplace_we($row, $rs)
- {
- if(!isempt($rs['fengmian']))$row['picurl'] = $rs['fengmian'];
- if($this->ydarr===false)$this->ydarr = explode(',', m('log')->getread('infor', $this->adminid));
-
- if(!in_array($rs['id'], $this->ydarr)){
- $row['statustext'] = '未读';
- $row['statuscolor'] = '#ED5A5A';
- }else{
- $row['ishui'] = 1;
- }
-
- return $row;
- }
- public function flowwesearchdata($lx)
- {
- if($lx==1)return $this->option->getselectdata('gongtype', true);
- return array(
- 'typename' => '所有通知',
- 'searchmsg' => '通知标题/分类',
- );
- }
-
- //审核完成后发通知
- protected function flowcheckfinsh($zt)
- {
- if($zt==1)$this->tisongtodo();
- }
-
- public function getreceids($receid, $whe='')
- {
- $receid = $this->adminmodel->gjoin($receid,'ud','where');
- if($receid=='' || $receid=='all'){
- $where = '';
- }else{
- $where = 'and id>0 and ('.$receid.')';
- }
- $ids = '';
- $rows = $this->adminmodel->getall('`status`=1 '.$where.' '.$whe.'','id');
- foreach($rows as $k=>$rs)$ids.=',u'.$rs['id'].'';
- if($ids!='')$ids = substr($ids, 1);
-
- return $ids;
- }
-
-
- //发送推送通知
- private function tisongtodo()
- {
- //还没到展示时间就不发送提醒
- $zstart= arrvalue($this->rs, 'zstart');
- if(!isempt($zstart) && $zstart>$this->rock->date)return;
-
- $h = c('html');
- $cont = $h->htmlremove($this->rs['content']);
- $cont = $h->substrstr($cont,0, 40);
- if(strlen($cont)>41)$cont.='...';
- if(isempt($cont))$cont = $this->rs['title']; //为空时
- $this->push($this->rs['receid'], '通知公告', $cont, $this->rs['title'],1);
-
- //添加短信提醒,短信提醒
- if(arrvalue($this->rs,'issms')=='1'){
- $receid = $this->rs['receid'];//接收人ID,可以为部门合聚,如d2,u1(必须)
- if(isempt($receid))$receid = 'all'; //为空就是全部人
- $qiannum= ''; //【系统→短信管理→短信签名】下获取,如没有自己的签名默认【信呼OA】
- $tplnum = m('option')->getval('gongsmstpl', 'gongsms');//到【数据选项→行政选项】下设置通知短信模版编号
- $params = array(
- 'title' => $this->rs['title'],
- 'typename' => $this->rs['typename'],
- );
- $url = $this->getxiangurlx();//详情连接地址(选填),短信模版有url就需要填写
- c('xinhuapi')->sendsms($receid, $qiannum, $tplnum, $params, $url);
- }
- }
-
- protected function flowgetoptmenu($opt)
- {
- $to = m('log')->isread($this->mtable, $this->id);
- return $to<=0;
- }
-
- protected function flowoptmenu($ors, $crs)
- {
- $table = $this->mtable;
- $mid = $this->id;
- $uid = $this->adminid;
- $lx = $ors['num'];
- $log = m('log');
- if($lx=='yd'){
- $log->addread($table, $mid, $uid);
- }
- if($lx=='allyd'){
- $ydid = $log->getread($table, $uid);
- $where = "id not in($ydid)";
- $meswh = m('admin')->getjoinstr('receid', $uid);
- $where .= $meswh;
- $rows = m($table)->getrows($where,'id');
- foreach($rows as $k=>$rs)$log->addread($table, $rs['id'], $uid);
- }
- }
-
- protected function flowbillwhere($uid, $lx)
- {
- $key = $this->rock->post('key');
- $typeid = (int)$this->rock->post('typeid','0');
- $keywere= '';
- $whyere = '';
- if(!isempt($key))$keywere.=" and (`title` like '%$key%' or `typename`='$key')";
- //我和我未读
- if($lx=='my' || $lx=='wexx'){
- $whyere= "and (`zstart` is null or `zstart`<='{$this->rock->date}')";
- $whyere.= " and (`zsend` is null or `zsend`>='{$this->rock->date}')";
- $wdate = $this->adminmodel->getmou('workdate', $uid);
- if(!isempt($wdate))$whyere.=" and `indate`>='$wdate'";
- }
-
- if($typeid>0){
- $typename=$this->option->getmou('name', $typeid);
- $whyere.=" and `typename`='$typename'";
- }
-
- return array(
- 'order' => '`istop` desc,`optdt` desc',
- 'keywere' => $keywere,
- 'where' => $whyere,
- 'fields' => 'id,typename,optdt,title,optname,zuozhe,indate,recename,fengmian,mintou,`status`,`istop`,`appxs`,`comid`'
- );
- }
-
-
- //显示投票
- protected function flowdatalog($arr)
- {
- $istoupiao = 0;
- $mintou = (int)arrvalue($this->rs, 'mintou','0');
- $maxtou = (int)arrvalue($this->rs, 'maxtou','0');
- $status = (int)arrvalue($this->rs, 'status','0');
- $touarr = array();
- $logarr = array();
- if($mintou>0){
- $istoupiao = 4;
- $toutype = 0;//不需要投票,1已投票,2未投票
- $receid = $this->rs['receid'];
- if(isempt($receid)){
- $istoupiao = 1;
- }else{
- $bo = $this->adminmodel->containjoin($receid, $this->adminid);
- if($bo)$istoupiao = 1;
- }
- $zongps = 0;
- $touitems = m('infors')->getall('mid='.$this->id.'','*','`sort`');
- foreach($touitems as $k=>$rs){
- $zongps+=floatval($rs['touci']);
- $touitems[$k]['bili'] = 0;
- }
- if($zongps>0)foreach($touitems as $k=>$rs){
- $touitems[$k]['bili'] = $this->rock->number(floatval($rs['touci'])/$zongps * 100);
- }
-
-
- $touarr['touitems'] = $touitems;
-
- if($istoupiao==1){
- if($this->rs['startdt']>$this->rock->now)$istoupiao = 2; //未开始
- if($this->rs['enddt']<$this->rock->now)$istoupiao = 3; //结束
- }
-
- $touarr['type'] = ($mintou==1 && $maxtou==1)? 'radio': 'checkbox';
-
- //判断我是否投票了
- if($istoupiao==1 && $status==1){
- $towheer = $this->mwhere." and `name`='投票' and `checkid`='$this->adminid'";
- if($this->flogmodel->rows($towheer)>0){
- $toutype = 1;
- $istoupiao = 5;
- }else{
- $toutype = 2; //未投票
- }
- }
- $touarr['toutype'] = $toutype;
-
- //判断是否可以显示结果
- $showtou = 0;
- if($istoupiao!=2 && $status==1 && ($toutype==1 || $toutype==0))$showtou = 1;
- if($showtou==0){
- foreach($arr['logarr'] as $k1=>$rs1){
- if($rs1['actname']!='投票')$logarr[] = $rs1;
- }
- }
-
- $touarr['showtou'] = $showtou;
- $touarr['mintou'] = $mintou;
- $touarr['maxtou'] = $maxtou;
- }
-
- $toupiaoarrr = explode(',',',<font color=blue>投票进行中</font>,<font color=#ff6600>未开始</font>,<font color=#888888>已结束</font>,<font color=#888888>你不在投票对象中</font>,<font color=green>已投票过了</font>');
-
-
- $arr['istoupiao'] = $istoupiao; //投票状态0不能,1可以,2未开始,3结束 4你不需要投票
- $arr['toupiaostatus'] = $toupiaoarrr[$istoupiao];
- $arr['title'] = '';
- $arr['touarr'] = $touarr;
- if($logarr)$arr['logarr'] = $logarr;
-
-
- $arr['readunarr'] = $this->readunarr;//读取未查阅
-
- return $arr;
- }
- }
|