scheduleModel.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. class scheduleClassModel extends Model
  3. {
  4. private $datarows = array();
  5. private $dtobj;
  6. public function initModel()
  7. {
  8. $this->dtobj = c('date');
  9. }
  10. public function getmonthdata($uid, $month='')
  11. {
  12. if($month=='')$month = date('Y-m');
  13. $startdt = ''.substr($month,0,7).'-01';
  14. $enddt = $this->dtobj->getenddt($month);
  15. return $this->getlistdata($uid, $startdt, $enddt);
  16. }
  17. /**
  18. * 读取个人日程
  19. */
  20. public function getlistdata($uid, $startdt, $enddt, $whe='')
  21. {
  22. $arr = array();
  23. $this->dtobj= c('date');
  24. $jg = $this->dtobj->datediff('d', $startdt, $enddt)+1;
  25. $where = '';
  26. if($uid>0){
  27. $whes = m('admin')->getjoinstr('receid', $uid, 0 , 1);
  28. $where = 'and ((`uid`='.$uid.') or (1 '.$whes.'))';
  29. }
  30. $sql = "select * from `[Q]schedule` where `status`=1 $where $whe and `startdt`<'$enddt 23:59:59' and (`enddt` is null or `enddt`>'$startdt')";
  31. $rows = $this->db->getall($sql);
  32. foreach($rows as $k=>$rs){
  33. $endtime = 2999999999;
  34. if(!isempt($rs['enddt']))$endtime = strtotime($rs['enddt']);
  35. $rows[$k]['endtime'] = $endtime;
  36. $rows[$k]['time'] = explode('-', date('Y-m-d-H-i-s', strtotime($rs['startdt'])));
  37. $rows[$k]['starttime'] = strtotime(substr($rs['startdt'],0,10));
  38. }
  39. for($i=0;$i<$jg; $i++){
  40. if($i==0)$dt= $startdt;
  41. if($i>0)$dt = $this->dtobj->adddate($dt,'d', 1);
  42. $dttime = strtotime($dt);
  43. $dta = explode('-', $dt);
  44. $_d = (int)$dta[2];
  45. $nw = (int)date('w', $dttime);
  46. $row = array();
  47. foreach($rows as $k=>$rs){
  48. $rate = $rs['rate'];
  49. $uid = $rs['uid'];
  50. $ratev= ','.$rs['rateval'].',';
  51. if($dttime<$rs['starttime'])continue;
  52. if($rs['endtime']<$dttime)continue;
  53. $dts = $rs['time'];
  54. $time = '';
  55. if($rate=='d'){
  56. $pinv = $rs['rateval'];
  57. if(isempt($pinv))$pinv = 1;
  58. $pinv = (int)($pinv);
  59. $jgsj = $this->dtobj->datediff('d',$rs['startdt'], $dt);
  60. $time = ''.$dt.' '.$dts[3].':'.$dts[4].':00';
  61. if($pinv>1 && $jgsj % $pinv!=0)$time='';
  62. }else if($rate=='m'){
  63. if(contain($ratev,','.$_d.',')){
  64. $time = ''.$dt.' '.$dts[3].':'.$dts[4].':00';
  65. }
  66. }else if($rate=='w'){
  67. if(contain($ratev,','.$nw.',')){
  68. $time = ''.$dt.' '.$dts[3].':'.$dts[4].':00';
  69. }
  70. }else{
  71. if(contain($rs['startdt'], $dt))$time=$rs['startdt'];
  72. }
  73. if($time!=''){
  74. $barsa = array(
  75. 'id' => $rs['id'],
  76. 'title' => $rs['title'],
  77. 'optname'=>$rs['optname'],
  78. 'receid' =>$rs['receid'],
  79. 'explain' =>$rs['explain'],
  80. 'txsj' =>$rs['txsj'],
  81. 'isdai' =>arrvalue($rs, 'isdai'),
  82. 'week' =>$this->dtobj->cnweek($dt),
  83. 'time' =>$time,
  84. 'timea' =>substr($time,11,5)
  85. );
  86. $row[] = $barsa;
  87. if(!isset($this->datarows[$uid]))$this->datarows[$uid] = array();
  88. $this->datarows[$uid][] = $barsa;
  89. }
  90. }
  91. $arr[$dt] = $row;
  92. }
  93. return $arr;
  94. }
  95. /**
  96. * 日程提醒发送
  97. */
  98. public function gettododata($dt='')
  99. {
  100. if($dt=='')$dt=$this->rock->date;
  101. $this->datarows = array();
  102. $this->getlistdata(0, $dt, $dt);
  103. $barr = $this->datarows;
  104. $time = time();
  105. $flow = m('flow')->initflow('schedule');
  106. foreach($barr as $uid=>$rows){
  107. $str ='';
  108. $sid = 0;
  109. $GLOBALS['adminid'] = $uid;
  110. foreach($rows as $k=>$rs){
  111. $txsj = strtotime($rs['time']);
  112. $jg = $txsj-$time;
  113. if($jg <= 305 && $jg>0){
  114. $str .= ','.$rs['title'];
  115. $sid = $rs['id'];
  116. $flow->id = $sid;
  117. $receid = $uid;
  118. if(!isempt($rs['receid'])){
  119. $receid = 'u'.$receid.','.$rs['receid'].'';
  120. }
  121. if($rs['txsj']=='1'){
  122. $cont = '类型:日程提醒\n记事人:'.$rs['optname'].'\n时间:'.$rs['time'].'';
  123. if(!isempt($rs['explain']))$cont.='\n说明:'.$rs['explain'].'';
  124. $flow->push($receid, '', $cont, ''.$rs['title'].'');
  125. }
  126. //写入到日程待办里
  127. $this->insertdaiban($rs);
  128. }
  129. }
  130. if($str!=''){
  131. //$flow->id = $sid;
  132. //$flow->push($uid, '', substr($str, 1), '日程提醒');
  133. }
  134. }
  135. }
  136. private function insertdaiban($rs)
  137. {
  138. if($rs['isdai']!='1')return;
  139. $dbrs = $this->getone($rs['id']);
  140. $startdt = $rs['time'];
  141. $dt = date('Y-m-d', strtotime($startdt));
  142. $this->rock->adminname = $dbrs['optname'];
  143. $this->rock->adminid = $dbrs['uid'];
  144. $mdb = m('flow')->initflow('scheduld');
  145. if($mdb->rows("`schid`='".$dbrs['id']."' and `startdt` like '".$dt."%'")>0)return;//有添加过
  146. $inarr = array(
  147. 'title' => $dbrs['title'],
  148. 'startdt' => $startdt,
  149. 'uid' => $dbrs['uid'],
  150. 'schid' => $dbrs['id'],
  151. 'optdt' => $this->rock->now,
  152. 'applydt' => $this->rock->date,
  153. 'explain' => $dbrs['explain'],
  154. 'optname' => $dbrs['optname'],
  155. 'optid' => $dbrs['uid'],
  156. 'comid' => $dbrs['comid'],
  157. 'receid' => $dbrs['receid'],
  158. 'recename' => $dbrs['recename'],
  159. 'distid' => $dbrs['uid'],
  160. 'distren' => $dbrs['optname'],
  161. 'status' => 0,
  162. 'isturn' => 1,
  163. );
  164. $id = $mdb->insert($inarr);
  165. $mdb->loaddata($id, false);
  166. $mdb->submit();
  167. }
  168. }
粤ICP备19079148号