Example #1
0
 /**
  * Получить периоды непосещения.
  * @param mixed $ids - id студенческой группы (можно передать массив)
  * @param array $semset - настройки семестра
  * @return array
  */
 public static function getUnvisit($ids, $semset)
 {
     $ids = RPU::arr($ids);
     $MsSQL = RPDB::connect();
     $ds = current(explode(' ', $semset['ds']));
     $qe = "";
     if (isset($semset['de'])) {
         $de = current(explode(' ', $semset['de']));
         $qe = " AND data_start < '{$de}'";
     }
     $numsts = RPIrro::getNumsts($ids);
     $STH = $MsSQL->prepare("Select id,numst," . RPU::sqldate('data_start') . " data_start," . RPU::sqldate('data_end') . " data_end from time_unvisit where numst IN(" . RPU::plas($numsts) . ") AND data_end > '{$ds}' {$qe}");
     if (!$STH->execute($numsts)) {
         throw new Exception("Не удалось получить даты непосещения.");
     }
     $unvisit = array();
     while ($row = $STH->fetch(PDO::FETCH_ASSOC)) {
         $row['ws'] = RPU::weeksBetween($semset['ds'], $row['data_start']);
         $row['we'] = RPU::weeksBetween($semset['ds'], $row['data_end']);
         $unvisit[] = $row;
     }
     return RPU::e($unvisit);
 }