Example #1
0
 /**
  * Проапгрейдить дисцилпины преподавателями.
  * @param array $tpds то что возвращается функцией <a href="#upgradeGroups">upgradeGroups</a>
  * @param bool $name флаг, записывать имя преподавателя или нет. по умолчанию true
  * @param bool $st флаг, братьли информацию о студентах преподавателя. по умолчанию false
  * @return array  [ [ <то что было в массиве> preps=>[gr_id=>[ [id,id_tutor ,name*,st=>[numst]*] ]] ] ]
  */
 public static function upgradePreps(&$tpds, $name = true, $st = false)
 {
     $MsSQL = RPDB::connect();
     $dis = RPU::reshape($tpds, 'id_link');
     $STH = $MsSQL->prepare("SELECT * from dis_tutor_gr where id_tup_d IN(" . RPU::plas($dis) . ")");
     if (!$STH->execute(array_keys($dis))) {
         throw new Exception('Ошибка получения преподавателей');
     }
     if ($pr = $STH->fetchAll(PDO::FETCH_ASSOC)) {
         /*Дополнительная информация, если нужна*/
         if ($st) {
             $id_dis_tutor_gr = RPU::reshape($pr, 'id');
             $STH = $MsSQL->prepare("SELECT * from tutor_st where id_dis_tutor_gr IN(" . RPU::plas($id_dis_tutor_gr) . ")");
             if (!$STH->execute(array_keys($id_dis_tutor_gr))) {
                 throw new Exception('Ошибка получения студентов');
             }
             $stud = RPU::groupBy($STH->fetchAll(PDO::FETCH_ASSOC), 'id_dis_tutor_gr');
         }
         if ($name) {
             $names = RPIrro::prepsNames(RPU::reshape($pr, 'id_tutor', 'id_tutor'));
         }
         /*------------------------------------*/
         foreach ($pr as $k => $v) {
             $ar = array('id' => $v['id'], 'id_tutor' => $v['id_tutor']);
             if ($name) {
                 $ar['name'] = $names[$v['id_tutor']];
             }
             if ($st) {
                 $ar['st'] = RPU::reshape($stud[$v['id']], false, 'numst');
             }
             $preps[$v['id_tup_d']][$v['gr']][] = $ar;
         }
     }
     foreach ($tpds as $k => $v) {
         foreach ($v['groups'] as $gr) {
             $tpds[$k]['preps'][$gr] = $preps[$v['id_link']][$gr];
         }
     }
     return $tpds;
 }
Example #2
0
//Приведение формата чисел к печатному
//Берем баллы студентов для связи ТУП+Д
$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()));
//симуляция для случаев, когда преподов нет
foreach ($dis as $i => $d) {
    //Не выводим студенту информацию о других
    $dis[$i]['grades'] = end(RPU::filterBy($d['grades'], array('numst' => $numst)));
    //Кафедра и препод
    $dis[$i]['kaf'] = $kafs[$d['id_dis']]['name'];
    //Опускаем для удобства
    $dis[$i]['kms'] = $d['kms'][$gr['id']];
    $dis[$i]['mvb'] = $d['mvb'][$gr['id']];
    $dis[$i]['mvbi'] = $d['mvbi'][$gr['id']];
    $dis[$i]['preps'] = $d['preps'][$gr['id']] ? $d['preps'][$gr['id']] : $nopreps;
    $dis[$i]['preps'] = RPU::reshape($dis[$i]['preps'], 'id_tutor');
    //---------------------