hyarra = array('正常','会议中','结束','取消');
$this->hyarrb = array('green','blue','#ff6600','#888888');
$this->dbobj = c('date');
$this->reatearr = array(
'd' => '每天',
'w1' => '每周一',
'w2' => '每周二',
'w3' => '每周三',
'w4' => '每周四',
'w5' => '每周五',
'w6' => '每周六',
'w7' => '每周日',
'm' => '每月',
'y' => '每年',
);
}
public function getratestore()
{
$arr = array();
foreach($this->reatearr as $k=>$v)$arr[] = array(
'value' => $k,
'name' => $v
);
return $arr;
}
public function flowrsreplace($rs, $lx=0)
{
if(arrvalue($rs, 'type')=='1'){
$ztrs = '启用';
if($rs['status']=='0'){
$ztrs = '停用';
$rs['ishui']=1;
}
if(!isempt($rs['rate']))$ztrs.=','.arrvalue($this->reatearr,$rs['rate']).''; //转未汉字
$rs['state'] = $ztrs;
return $rs;//说明是固定会议
}
$rs['week'] = $this->dbobj->cnweek($rs['startdt']);
$zt = $rs['state'];
$nzt = $zt;
$time = time();
$stime = strtotime($rs['startdt']);
$etime = strtotime($rs['enddt']);
if($zt < 2){
if($etime<$time){
$nzt = 2;
}else if($stime>$time){
$nzt = 0;
}else{
$nzt = 1;
}
}
if($zt != $nzt){
$this->update('state='.$nzt.'', $rs['id']);
$zt = $nzt;
}
$rs['ishui'] = ($zt>=2) ? 1 : 0;
if($lx==1){
$content = '';
$inpurl = $this->getinputurl('meetjy',0,'def_mid='.$this->id.'');
$rows = $this->getrows('`mid`='.$this->id.' and `type`=2','id,content,optname,optdt,optid','id');
//是否可以加会议纪要
$dtss = c('date')->adddate($this->rock->date,'d',-10).' 00:00:00';
$addbo = $rs['startdt']>$dtss && $zt>0;
$fobj = m('file');
foreach($rows as $k=>$rs1){
$content.= '
['.$rs1['optname'].']纪要';
$inpurl1 = $this->getinputurl('meetjy',$rs1['id']);
if($addbo && $rs1['optid']==$this->adminid)$content.= '
[编辑]';
$content.= ':
'.$rs1['content'].'';
$fstr = $fobj->getstr('meet', $rs1['id'], 2);
if($fstr!='')$content.= '
'.$fstr.'';
$content.= '
';
}
if($addbo){
$content.=' +新增纪要';
}
$rs['content']= $content;
$rs['content_style'] = 'padding:0px';
}
$rs['state'] = $this->getstatezt($zt);
$rs['nzt'] = $zt;
if(isset($rs['issms'])){
$issms = '否';
if($rs['issms']==1)$issms = '是';
$rs['issms'] = $issms;
}
//打印时
if($lx==3){
if(substr($rs['startdt'],0,10)==$this->rock->date)$rs['startdt'] = substr($rs['startdt'],11);
if(substr($rs['enddt'],0,10)==$this->rock->date)$rs['enddt'] = substr($rs['enddt'],11);
$rs['ermurl'] = $this->rock->jm->base64encode(getconfig('outurl',URL).'task.php?a=x&num=meet&mid='.$rs['id'].'&showtype=qd');
}
return $rs;
}
//签到菜单判断
protected function flowgetoptmenu($num)
{
if($num=='qdnoup'){
if($this->rock->get('showtype')!='qd')return false;
}
}
public function getstatezt($zt)
{
return ''.$this->hyarra[$zt].'';
}
protected function flowsubmit($na, $sm)
{
if($this->rs['status']==1){
$this->tisongtodo();
}
//固定会议
if($this->rs['type']=='1'){
$this->createmeet($this->id);
}
}
//审核完成后发通知
protected function flowcheckfinsh($zt)
{
if($zt==1)$this->tisongtodo();
}
private function tisongtodo()
{
if($this->rs['type']!='0')return;//这个是普通会议才需要通知。
if($this->rs['startdt'] < $this->rock->now)return;//已过期了
//发给参会人
//$cont = '{optname}发起会议“{title}”在{hyname},时间{startdt}至{enddt}';
//$this->push($this->rs['joinid'], '会议', $cont);
$cont = "您好,您有一个新的会议计划。\n\n会议主题:{title}\n会议时间:{startdt}至{enddt}\n会议地点:{hyname}";
$zcren= arrvalue($this->rs,'zcren');
if(!isempt($zcren)){
$cont.="\n会议主持人:{zcren}";
}else{
$cont.="\n发起人:{optname}";
}
$this->pushs($this->rs['joinid'], $cont, '会议通知');
$tplnum = m('option')->getval('meetsmstpl', 'meetapply');
$this->sendsms($this->rs, $tplnum, array(
'optname' => $this->adminname,
'title' => $this->rs['title'],
'hyname' => $this->rs['hyname'],
'startdt' => $this->rs['startdt'],
'enddt' => $this->rs['enddt'],
));
}
protected function flowaddlog($a)
{
$actname = $a['name'];
if($actname == '取消会议'){
$this->push($this->rs['joinid'], '会议', ''.$this->adminname.'取消会议“{title}”,时间{startdt}至{enddt},请悉知。');
$this->update('`state`=3', $this->id);
$tplnum = m('option')->getval('meetsmstplqx', 'meetcancel');
$this->sendsms($this->rs, $tplnum, array(
'optname' => $this->adminname,
'title' => $this->rs['title'],
'hyname' => $this->rs['hyname'],
'startdt' => $this->rs['startdt'],
'enddt' => $this->rs['enddt'],
));
}
if($actname == '结束会议'){
$this->update('`state`=2', $this->id);
}
}
//发短信提醒
public function sendsms($rs, $tplnum, $params)
{
$receid = $rs['joinid'];
$issms = arrvalue($rs,'issms');
if(isempt($receid) || $issms!='1')return;
$jyid = $rs['jyid'];
if(!isempt($jyid))$receid.=','.$jyid.''; //发个纪要人
$zcrenid= arrvalue($rs, 'zcrenid');
if(!isempt($zcrenid))$receid.=','.$zcrenid.''; //发个主持人
$qiannum= ''; //签名编号,可以为空
$barr = c('xinhuapi')->sendsms($receid, $qiannum, $tplnum, $params);
return $barr;
}
protected function flowbillwhere($uid, $lx)
{
$dt = $this->rock->post('dt');
$where = '';
//固定会议
if($lx=='allgd'){
$where = 'and `type`=1';
}else{
$where = 'and `type`=0';
}
if($dt!='')$where.=" and startdt like '$dt%'";
//$fields = 'id,startdt,enddt,optname,state,title,hyname,joinname,`explain`,jyname';
return array(
//'fields' => $fields,
'where' => $where,
'order' => 'startdt desc'
);
}
//每天运行计划任务将固定会议生成普通会议通知对应人
public function createmeet($id=0, $nowdt='', $gbrr=false)
{
$owhe = '';
if($id>0)$owhe='`id`='.$id.' and ';
$narr = $this->getall(''.$owhe.'`type`=1 and `status`=1');
$dtobj = c('date');
$jlarr = array();
foreach($narr as $k=>$rs){
$gdt = $dtobj->daterate($rs['rate'], $rs['startdt'], $nowdt);
if(!$gdt)continue;
$startdt = ''.$gdt.' '.substr($rs['startdt'],11).'';
$enddt = ''.$gdt.' '.substr($rs['enddt'],11).'';
$ars = $rs;
$ars['mid'] = $rs['id'];
$ars['type'] = '0';
$ars['startdt'] = $startdt;
$ars['enddt'] = $enddt;
$ars['state'] = 0;
$ars['rate'] = '';
unset($ars['id']);
$this->adminmodel->setcompanyid($rs['comid']);
$GLOBALS['adminid'] = $ars['optid'];
$where = "`mid`=".$rs['id']." and `startdt` like '".$gdt."%'";
$ors = $this->getone($where);
$uwerew = '';
$iid = 0;
if($ors){
$iid = $ors['id'];
$uwerew = "`id`='$iid'";
}
$jlarr[] = $ars;
if($gbrr)continue; //不写入数据库里
$this->record($ars, $uwerew);
if($iid==0){
$iid = $this->db->insert_id();
$this->loaddata($iid, false);
$this->tisongtodo();//通知
}
}
return $jlarr;
}
public function meettodo()
{
$rows = $this->getall("`state` in(0,1) and `type`=0 and `startdt` like '".$this->rock->date."%' and `status`=1");
$time = time();
foreach($rows as $k=>$rs){
$this->adminmodel->setcompanyid($rs['comid']); //设置对应单位id
$zt = $rs['state'];
$dts = explode(' ', $rs['startdt']);
$sttime = strtotime($rs['startdt']);
$ettime = strtotime($rs['enddt']);
$GLOBALS['adminid'] = $rs['optid'];
$nzt = -1;
if($ettime <= $time){
$nzt = 2;
}else{
if($time >= $sttime && $time< $ettime){
if($zt==0)$nzt = 1;
}else{
$jg = $sttime - $time;
if($jg <= 600 && $zt==0){ //提前10分钟就提醒
$ssj = floor($jg/60);
$tzuid = $this->adminmodel->gjoin($rs['joinid']);
//$cont = '会议“'.$rs['title'].'”将在'.$ssj.'分钟后的'.$dts[1].'开始请做好准备,在会议室“'.$rs['hyname'].'”';
$this->loaddata($rs['id'], false);
$this->meettodos($rs, '您好,会议即将在'.$ssj.'分钟后的'.$dts[1].'开始,请准时参加。');//快到时间通知
//短信通知
if($ssj<6)$this->sendsms($rs, 'meettodo', array(
'fenz' => ''.$ssj.'',
'title' => $rs['title'],
'time' => $dts[1],
'hyname' => $rs['hyname']
));
}
}
}
if($nzt != -1)$this->update("`state`='$nzt'", $rs['id']);
}
}
private function meettodos($rs, $kss)
{
$receid = $rs['joinid'];
if(isempt($receid))return;
$cont = "".$kss."\n\n会议主题:{title}\n会议时间:{startdt}至{enddt}\n会议地点:{hyname}";
$zcren= arrvalue($rs,'zcren');
if(!isempt($zcren)){
$cont.="\n会议主持人:{zcren}";
}else{
$cont.="\n发起人:{optname}";
}
$jyid = $rs['jyid'];
if(!isempt($jyid))$receid.=','.$jyid.''; //发个纪要人
$zcrenid= arrvalue($rs, 'zcrenid');
if(!isempt($zcrenid))$receid.=','.$zcrenid.''; //发个主持人
$this->pushs($receid, $cont, '会议提醒');
}
}