/** * Получить периоды непосещения. * @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); }