Files
xinhu/webmain/model/scheduleModel.php
2023-04-05 13:00:20 +08:00

178 lines
5.1 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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();
}
}