178 lines
5.1 KiB
PHP
178 lines
5.1 KiB
PHP
<?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();
|
||
}
|
||
} |