rows('`mid`='.$this->id.' and `uid`='.$this->adminid.''); return $to>0; } //删除时 protected function flowdeletebill($sm) { m('emails')->delete('`mid`='.$this->id.''); } protected function flowoptmenu($ors, $crs) { //撤回未读的 if($ors['num']=='chemail'){ $where = '`mid`='.$this->id.' and `type`<>2 and `zt`=0'; $drows = m('emails')->getall($where); m('emails')->delete($where); $uids = '0'; foreach($drows as $k1=>$rs1)$uids.=','.$rs1['uid'].''; m('todo')->deltodo($this->modenum, $this->id, $uids); } } protected function flowgetoptmenu($opt) { if($opt=='chemail'){ $to = $this->flogmodel->rows("".$this->mwhere." and `name`='撤回'"); if($to>0)return false; } } //立即发送提醒 protected function flowsubmit($na, $sm) { if($this->rs['isturn']==1 && $this->rs['type']==0){ $h = c('html'); $cont = $h->htmlremove($this->rs['content']); $cont = $h->substrstr($cont,0, 50); $receid = $this->rs['receid']; if(!isempt($this->rs['ccid']))$receid.=','.$this->rs['ccid']; $this->push($receid, '邮件', $cont.'...', $this->rs['title']); } } //重写方法将邮件标识已读邮件了 protected function flowdatalog($arr) { $where = '`mid`='.$this->id.' and `uid`='.$this->adminid.''; $dbs = m('emails'); $dbs->update('`zt`=1', $where); //判断我是否可以回复 $ishuifu = 0; $readunarr = array(); if($this->rs['isturn']==1){ $tos = $dbs->rows($where.' and `type` in(0,1)'); if($tos>0)$ishuifu = 1; //读取未读人员 $uids = ''; $uarrs = $dbs->getall('`mid`='.$this->id.' and `zt`=0 and `type` in(0,1) and `isdel`=0'); foreach($uarrs as $k=>$rs)$uids.=','.$rs['uid'].''; if($uids!='')$readunarr = $this->adminmodel->getuserinfo(substr($uids,1)); } $arr['ishuifu'] = $ishuifu; $arr['readunarr'] = $readunarr; return $arr; } private function dtssss($dt) { $cnw = c('date')->cnweek($dt); return date('Y年m月d日(星期'.$cnw.')H:i:s',strtotime($dt)); } public function flowrsreplace($rs, $lx=0) { $rs['senddt'] = $this->dtssss($rs['senddt']); if($lx == 1 && $rs['hid']>0){ $rs['oldcontent'] = $this->getoldcont($rs['hid']); } return $rs; } /** * 读取原来邮件内容 */ public function getoldcont($hid, $bo=true) { $hid = (int)$hid; if($hid==0)return ''; $hrs = $this->getone($hid); if(!$hrs)return ''; $dts = $this->dtssss($hrs['senddt']); $fstr = m('file')->getstr($this->mtable, $hrs['id'], 1); $s = '
------------------ 原始邮件 ------------------
'; $s.= '
发件人: '.$hrs['sendname'].'
发送时间: '.$dts.'
收件人: '.$hrs['recename'].'
主题: '.$hrs['title'].'
'; $s.= '
'.$hrs['content'].'
'.$fstr.'
'; if($bo)$s.= $this->getoldcont($hrs['hid'], $bo); return $s; } protected function flowbillwhere($uid, $lx) { $where = '1=2'; $onwhere= ''; $key = $this->rock->post('key'); $dt = $this->rock->post('dt'); $dbs = m('emailm'); //所有邮件 if($lx=='' || $lx=='def' || $lx=='sjx'){ $where = $dbs->gettowhere($uid, 0); } //未读邮件 if($lx=='wdyj'){ $where = $dbs->gettowhere($uid, 1); } //草稿箱 if($lx == 'cgx'){ $where = $dbs->gettowhere($uid, 2); } //已发送 if($lx == 'yfs'){ $where = $dbs->gettowhere($uid, 3); } //已删除 if($lx == 'ysc'){ $where = $dbs->gettowhere($uid, 4); } if(!isempt($key))$where.=" and (a.`title` like '%$key%' or a.`recename` like '%$key%' or a.`sendname` like '%$key%')"; if(!isempt($dt))$where.=" and a.`senddt` like '$dt%'"; return array( 'where' => 'and '.$where, 'fields'=> 'a.`id`,a.`title`,a.`sendname`,a.`recename`,a.`senddt`,a.`isfile`,b.`ishui`,b.`zt`,a.`outzt`,a.`type`', 'order' => 'a.`senddt` desc', 'table' => '`[Q]emailm` a left join `[Q]emails` b on a.`id`=b.`mid` '.$onwhere.'' ); } private function getmid($uid, $type, $isdel=0) { $rows = m('emails')->getrows('`uid`='.$uid.' and `type` in('.$type.') and `isdel`='.$isdel.'','`mid`'); $ids = '0'; foreach($rows as $k=>$rs)$ids.=','.$rs['mid'].''; return $ids; } public function savesubmid($tuid, $mid, $type, $zt=0) { $now = $this->rock->now; if(is_numeric($tuid)){ $uids = $tuid; }else{ $uids = m('admin')->gjoin($tuid); } if($uids!=''){ $this->db->insert('[Q]emails','mid,uid,email,personal,type,optdt,zt',"select '$mid',id,email,name,'$type','$now','$zt' from `[Q]admin` where id in($uids)", true); } } /** * 邮件回复 * $cont 回复内容 */ public function huifu($cont) { $rs = $this->rs; $rers = $this->gethuifuarr(); if(!$rers)return '没有发送人'; $cont = str_replace("\n", '
', $cont); $arr['title'] = '回复:'.$rs['title'].''; $arr['content'] = $cont; $arr['sendid'] = $this->adminid; $arr['uid'] = $this->adminid; $arr['sendname'] = $this->adminname; $arr['senddt'] = $this->rock->now; $arr['applydt'] = $this->rock->date; $arr['hid'] = $this->id; $arr['type'] = $rs['type']; $arr['receid'] = $rers['uid']; $arr['recename'] = $rers['personal']; $arr['isturn'] = 1; $arr['outzt'] = 0; $arr['toemail'] = ''.$rers['personal'].'('.$rers['email'].')'; $arr['optdt'] = $this->rock->now; $id = $this->insert($arr); $sarr['mid'] = $id; $sarr['uid'] = $rers['uid']; $sarr['type'] = 0; $sarr['optdt'] = $this->rock->now; $sarr['email'] = $rers['email']; $sarr['personal'] = $rers['personal']; m('emails')->insert($sarr); $this->savesubmid($arr['sendid'], $id, 2,1); m('emails')->update('ishui=1','`mid`='.$this->id.' and `uid`='.$this->adminid.' and `type`=0');//更新已回复 //需要外发 if($rs['type']==1 && !isempt($rers['email'])){ $cont = $arr['content']; $cont .= $this->getoldcont($this->id, false); m('email')->sendemailout($this->adminid, array( 'title' => $arr['title'], 'body' => $cont, 'receemail' => $rers['email'], 'recename' => $arr['recename'], 'mid' => $id, )); } $this->loaddata($id, false); $this->submit('回复'); return 'ok'; } //获取要回复的接收人 public function gethuifuarr() { $rs = m('emails')->getone('`mid`='.$this->id.' and `type`=2'); return $rs; } }