/** * Получить периоды непосещения. * @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); }
if ($d['offset'][$numst]) { $offset[] = $d; unset($dis[$k]); } } if (empty($dis)) { throw new Exception('В выбранном семестре нет дисциплин'); } $kafs = RPIrro::getKafs($dis); //Берем все КМ $dis = RPIrro::upgradeGroups($dis, array($gr)); $dis = RPIrro::getKMS($dis, array($gr['id'])); $dis = RPU::e($dis); //Приведение формата чисел к печатному //Берем баллы студентов для связи ТУП+Д $ball = RPU::e(RPIrro::getBalls($dis, array($gr['id']))); //Взять настройки семестра $set = RPU::getSemSet($sem, false); //Подсчет МВБ $dis = RPIrro::upgradeGrades($dis, $ball, RPIrro::getStudents($gr['id']), $set['week']); $dis = RPIrro::upgradePreps($dis, true, true); //ИР КМ $irs_km = RPIrro::getKMIr(RPU::reshape($dis, false, 'id_link')); foreach ($irs_km as $k => $ir) { $ir['link'] = RPUrl::getIrUrl($ir['link']); $ir = RPU::label($ir); $irs_km[$k] = RPU::cnt($ir); } $irs_km = RPU::groupBy($irs_km, 'p'); //Подготовка к печати $nopreps = array(array('name' => 'Не назначен', 'st' => array()));