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