| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- <?php
- class scheduleClassModel extends Model
- {
- private $datarows = array();
- private $dtobj;
-
- public function initModel()
- {
- $this->dtobj = c('date');
- }
-
- public function getmonthdata($uid, $month='')
- {
- if($month=='')$month = date('Y-m');
- $startdt = ''.substr($month,0,7).'-01';
- $enddt = $this->dtobj->getenddt($month);
- return $this->getlistdata($uid, $startdt, $enddt);
- }
-
- /**
- * 读取个人日程
- */
- public function getlistdata($uid, $startdt, $enddt, $whe='')
- {
- $arr = array();
- $this->dtobj= c('date');
- $jg = $this->dtobj->datediff('d', $startdt, $enddt)+1;
- $where = '';
- if($uid>0){
- $whes = m('admin')->getjoinstr('receid', $uid, 0 , 1);
- $where = 'and ((`uid`='.$uid.') or (1 '.$whes.'))';
- }
- $sql = "select * from `[Q]schedule` where `status`=1 $where $whe and `startdt`<'$enddt 23:59:59' and (`enddt` is null or `enddt`>'$startdt')";
- $rows = $this->db->getall($sql);
- foreach($rows as $k=>$rs){
- $endtime = 2999999999;
- if(!isempt($rs['enddt']))$endtime = strtotime($rs['enddt']);
- $rows[$k]['endtime'] = $endtime;
- $rows[$k]['time'] = explode('-', date('Y-m-d-H-i-s', strtotime($rs['startdt'])));
- $rows[$k]['starttime'] = strtotime(substr($rs['startdt'],0,10));
- }
- for($i=0;$i<$jg; $i++){
- if($i==0)$dt= $startdt;
- if($i>0)$dt = $this->dtobj->adddate($dt,'d', 1);
- $dttime = strtotime($dt);
- $dta = explode('-', $dt);
- $_d = (int)$dta[2];
- $nw = (int)date('w', $dttime);
- $row = array();
- foreach($rows as $k=>$rs){
- $rate = $rs['rate'];
- $uid = $rs['uid'];
- $ratev= ','.$rs['rateval'].',';
- if($dttime<$rs['starttime'])continue;
- if($rs['endtime']<$dttime)continue;
- $dts = $rs['time'];
- $time = '';
- if($rate=='d'){
- $pinv = $rs['rateval'];
- if(isempt($pinv))$pinv = 1;
- $pinv = (int)($pinv);
- $jgsj = $this->dtobj->datediff('d',$rs['startdt'], $dt);
- $time = ''.$dt.' '.$dts[3].':'.$dts[4].':00';
- if($pinv>1 && $jgsj % $pinv!=0)$time='';
- }else if($rate=='m'){
- if(contain($ratev,','.$_d.',')){
- $time = ''.$dt.' '.$dts[3].':'.$dts[4].':00';
- }
- }else if($rate=='w'){
- if(contain($ratev,','.$nw.',')){
- $time = ''.$dt.' '.$dts[3].':'.$dts[4].':00';
- }
- }else{
- if(contain($rs['startdt'], $dt))$time=$rs['startdt'];
- }
- if($time!=''){
- $barsa = array(
- 'id' => $rs['id'],
- 'title' => $rs['title'],
- 'optname'=>$rs['optname'],
- 'receid' =>$rs['receid'],
- 'explain' =>$rs['explain'],
- 'txsj' =>$rs['txsj'],
- 'isdai' =>arrvalue($rs, 'isdai'),
- 'week' =>$this->dtobj->cnweek($dt),
- 'time' =>$time,
- 'timea' =>substr($time,11,5)
- );
- $row[] = $barsa;
- if(!isset($this->datarows[$uid]))$this->datarows[$uid] = array();
- $this->datarows[$uid][] = $barsa;
- }
- }
- $arr[$dt] = $row;
- }
- return $arr;
- }
-
- /**
- * 日程提醒发送
- */
- public function gettododata($dt='')
- {
- if($dt=='')$dt=$this->rock->date;
- $this->datarows = array();
- $this->getlistdata(0, $dt, $dt);
- $barr = $this->datarows;
- $time = time();
- $flow = m('flow')->initflow('schedule');
-
- foreach($barr as $uid=>$rows){
- $str ='';
- $sid = 0;
- $GLOBALS['adminid'] = $uid;
- foreach($rows as $k=>$rs){
- $txsj = strtotime($rs['time']);
- $jg = $txsj-$time;
- if($jg <= 305 && $jg>0){
- $str .= ','.$rs['title'];
- $sid = $rs['id'];
- $flow->id = $sid;
- $receid = $uid;
- if(!isempt($rs['receid'])){
- $receid = 'u'.$receid.','.$rs['receid'].'';
- }
- if($rs['txsj']=='1'){
- $cont = '类型:日程提醒\n记事人:'.$rs['optname'].'\n时间:'.$rs['time'].'';
- if(!isempt($rs['explain']))$cont.='\n说明:'.$rs['explain'].'';
- $flow->push($receid, '', $cont, ''.$rs['title'].'');
- }
-
- //写入到日程待办里
- $this->insertdaiban($rs);
- }
- }
- if($str!=''){
- //$flow->id = $sid;
- //$flow->push($uid, '', substr($str, 1), '日程提醒');
- }
- }
- }
-
-
- private function insertdaiban($rs)
- {
- if($rs['isdai']!='1')return;
- $dbrs = $this->getone($rs['id']);
- $startdt = $rs['time'];
- $dt = date('Y-m-d', strtotime($startdt));
- $this->rock->adminname = $dbrs['optname'];
- $this->rock->adminid = $dbrs['uid'];
- $mdb = m('flow')->initflow('scheduld');
- if($mdb->rows("`schid`='".$dbrs['id']."' and `startdt` like '".$dt."%'")>0)return;//有添加过
-
- $inarr = array(
- 'title' => $dbrs['title'],
- 'startdt' => $startdt,
- 'uid' => $dbrs['uid'],
- 'schid' => $dbrs['id'],
- 'optdt' => $this->rock->now,
- 'applydt' => $this->rock->date,
- 'explain' => $dbrs['explain'],
- 'optname' => $dbrs['optname'],
- 'optid' => $dbrs['uid'],
- 'comid' => $dbrs['comid'],
- 'receid' => $dbrs['receid'],
- 'recename' => $dbrs['recename'],
- 'distid' => $dbrs['uid'],
- 'distren' => $dbrs['optname'],
- 'status' => 0,
- 'isturn' => 1,
- );
-
- $id = $mdb->insert($inarr);
- $mdb->loaddata($id, false);
- $mdb->submit();
- }
- }
|